如何将json中的字符串转换为json对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将json中的字符串转换为json对象相关的知识,希望对你有一定的参考价值。

我有这个json字符串

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

并希望将其转换为JsonObject,因为它内部有一个json字符串,我必须拔出JsonElement然后使用它。问题是JsonElement“service”和“op”是String

我想像这样转换JsonObject

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

我尝试了新的JsonParser()。parse(string)以及新的Gson()。fromJson(string,JsonObject.class),但它没有解决。还尝试了Jolt,但它将其解析为String。

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

答案

我还没有办法做到这一点。使用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);
另一答案

这可能对你有所帮助!

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){
 // 
}
另一答案

使用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

以上是关于如何将json中的字符串转换为json对象的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据实体转换为 JSON 字符串

如何将数据实体转换为 JSON 字符串

如何将大型 JSON 字符串转换为 JSON 对象?

如何将json转换为字符串

php如何将json对象转字符串

将 vb.net 类对象转换为 vb.net 中的 JSON 字符串