JSON字符串转JSON对象,注意其中desc中要两个,而不是一个

{ "title": "材料輸入","desc":{"處理內容":"","處理內容":""},"wf_type":{"處理內容":"1","處理內容":"1"},"point":{"處理內容":"80,400,250,300","處理內容":"80,300,250,350"},"wf_allowblank":{"處理內容":"N","處理內容":"N"},"wf_radio":{},"wf_radiopoint":{}}"

我试了JSON.parse和eval都不行,转化出来desc中都是一个

3个回答

gson格式是从js对象的基础延伸的,js对象键值对中的键需要保持唯一性,如果两个键完全相同,后者会覆盖前者。
如果只是为了从字符串中过去两个desc的值,就不要当成json串处理,直接使用正则替换出来

lovingning
lovingning 然后通过group(1)得到第一组匹配的内容;再通过split(‘,’)获取每一个键值对;如果desc数据只是单纯的键值对,没有成员对象,那么就可以获取desc的所有内容了
2 年多之前 回复
lovingning
lovingning 回复xxm0720: 先通过正则获取desc的值(不包含大括号):/"desc":{(.+)}/g
2 年多之前 回复
xxm0720
xxm0720 关键是desc重复的值不一定是“处理内容”
2 年多之前 回复

你这个应该是先拿desc 再拿"处理内容"里面的值,不知道这样行不行,我试试

xxm0720
xxm0720 关键是desc重复的值不一定是“处理内容”
2 年多之前 回复
                Gson gson = new Gson();
        JsonParser parser = new JsonParser();
        JsonObject obj = parser.parse(doGet).getAsJsonObject();
         int retCode = obj.get("ret_code").getAsInt();
        System.out.println("retCode=" + retCode);
        if (retCode == 200) {
         JsonArray dataArray = obj.get("data").getAsJsonArray();
        dataArray.forEach((action) -> {
         JsonObject dataObj = action.getAsJsonObject();
         int platformNo = dataObj.get("platform_no").getAsInt();
         System.out.println("platformNo=" + platformNo);
        });
        }
```那个doget就是掉第三方拿到的json数据

xxm0720
xxm0720 这个在哪里用,怎么感觉像是C#的代码?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问