2

我有这个 json 字符串

{
  "team": "xyz",
  "patern": "abc",
  "service": "{\"version\":0,\"name\":\"some_service_name\"}",
  "op": "{\"version\":0,\"name\":\"some_op_name\"}",
  .
  .
  .
}

并且想将它转换为 JsonObject,因为它里面有一个 json 字符串,我必须拉出 JsonElement 然后使用它。问题是 JsonElement“服务”和“操作”是字符串

我希望 JsonObject 像这样转换

   {
      "team": "xyz",
      "patern": "abc",
      "service": {"version":0,"name":"some_service_name"},
      "op": {"version":0,"name":"some_op_name"},
      .
      .
      .
    }

我试过 new JsonParser().parse(string) 和 new Gson().fromJson(string, JsonObject.class) 但它没有解决。还尝试了 Jolt,但它将其解析为字符串。

我知道这可以通过将它映射到一个 java 类然后使用它来解决,但我想知道是否有办法在没有额外的 java 类的情况下摆脱它。

4

3 回答 3

2

我还没有找到一种方法来做到这一点。使用 Gson 虽然效果很好。我会做这样的事情。

Gson gson = new Gson();
Map res = gson.fromJson(string, Map.class);
Map service = gson.fromJson((String)res.get("service"), Map.class);
Map op = gson.fromJson((String)res.get("op"), Map.class);
res.put("service", service);
res.put("op", op);
String newString = gson.toJson(res);
于 2017-12-29T08:47:32.507 回答
0

这可能对你有帮助!

JSONEqualentBeanClass jSONEqualentBeanClass = null;
com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper();
try{
    jSONEqualentBeanClass  = mapper.readValue(yourJSONStr, JSONEqualentBeanClass.class);
}catch(Exception e){
 // 
}
于 2017-12-29T09:58:02.427 回答
0

使用org.json库:

 JSONObject jsonObj = new JSONObject("{\"team\": \"xyz\",\"patern\": \"abc\",
 \"service\": \"{\"version\":0,\"name\":\"some_service_name\"}\",
 \"op\": \"{\"version\":0,\"name\":\"some_op_name\"}\" }");

有关更多方法,请查看此链接

http://www.java67.com/2016/10/3-ways-to-convert-string-to-json-object-in-java.html

于 2017-12-29T10:12:23.337 回答