从JSON中提取数据并修改数据

时间:2017-08-30 08:10:44

标签: java json

我想从JSON字符串下面提取jkl对象。提取后,我希望删除反斜杠并使用大括号进一步提取。我在StackOverflow上关注了一些问题,但它没有多大帮助。

{
 "abc:def": {
      "ghi": {
         "jkl": "{\"mno:pqr\":{\"ty\":4,\"\\nsensing_service_name:\\\"Number\\\",\\nsensing_service_id: 20\\n}\\n     ]\\n}\"}}",
         "st": {
            "op": 5,
            "org": "q9wr9qrq"
         },
         "uvw": 1
      },
      "xyz": false
   }
} 

我尝试下面的代码来显示jkl对象,但它无法正常工作。请说明这有什么问题以及如何纠正

JSONObject json = (JSONObject) JSONSerializer.toJSON(data);
JSONObject aa = json.getJSONObject("abc:def");
JSONObject bb = aa.getJSONObject("ghi");
JSONObject cc = bb.getJSONObject("jkl");
System.out.println(cc);

1 个答案:

答案 0 :(得分:0)

希望这会对你有所帮助:

import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;

public class TestClass {
    public static void main(String[] args) throws Exception {
        String jsonString = "{\n" +
                " \"abc:def\": {\n" +
                "      \"ghi\": {\n" +
                "         \"jkl\": \"{\\\"mno:pqr\\\":{\\\"ty\\\":4,\\\"\\\\nsensing_service_name:\\\\\\\"Number\\\\\\\",\\\\nsensing_service_id: 20\\\\n}\\\\n     ]\\\\n}\\\"}}\",\n" +
                "         \"st\": {\n" +
                "            \"op\": 5,\n" +
                "            \"org\": \"q9wr9qrq\"\n" +
                "         },\n" +
                "         \"uvw\": 1\n" +
                "      },\n" +
                "      \"xyz\": false\n" +
                "   }\n" +
                "} ";

        JSONObject jsonObject = new JSONObject(jsonString);
        jsonObject = (JSONObject) jsonObject.get("abc:def");
        jsonObject = (JSONObject) jsonObject.get("ghi");
        String result = jsonObject.getString("jkl");
        result = StringUtils.replace(result, "\\n", "");
        System.out.println(result.replaceAll("\\\\",""));
    }
}