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

3

我有一个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”是字符串。

我希望将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类。

1
你的问题是什么?你希望我们做什么?你需要解析服务和操作字符串,就像解析外部JSON字符串一样。你如何做到这一点并不重要。或者你需要退后一步,思考为什么你有jsn字符串作为json文档的值,并重新设计系统。 - JB Nizet
use GSON conversion for this. - Sagar Nayak
看一下jackson - Lino
@JBNizet - 我所使用的终端系统无法更改,它们在JSON文档中作为值具有JSON字符串。我必须进行处理以获取所需字段。我需要帮助解析这些JSON字符串或将整个JSON字符串转换为标准JSON(不包含JSON字符串)。 - Sandeep Raikar
@SagarNayak - 我知道我可以添加一个Java类并映射所有字段,这个解决方案可行,但我想要更简单的解决方案,不需要创建额外的类。 - Sandeep Raikar
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);

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){
 // 
}

这个可以工作,但我想要一个不使用bean类的解决方案,基本上利用Gson或jackson库。 - Sandeep Raikar
试试这个:https://stackoverflow.com/questions/41518241/json-parsing-without-using-java-objects - Abi Divi

0

这行不通。我需要帮助处理JSON文档中的JSON字符串值并解析这些JSON字符串,或将整个JSON字符串转换为标准JSON(不包含JSON字符串)。我知道可以通过将其映射到Java类来完成此操作,但我需要另一种选择。 - Sandeep Raikar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接