首页 > 解决方案 > 从字符串中获取带有json对象的数组

问题描述

我有一个 java spring boot 项目,它进行 REST API 调用,返回的 json 的一个元素如下:

"args": "[[\"element_1\"],[\"element_2\"],[\"{\\\"payload\\\":\\\"{\\\"Header\\\": \\\"Header_title\\\", \\\"Content\\\": \\\"Content of the payload\\\"}\\\"}\"]]"

我的目标是获得 JsonObject “有效载荷”。我可以使用 JsonObject argString = (JsonObject) jsonParser.parse(originalJsonObject.get("args").toString()); (使用包 com.google.gson.JsonObject)获取字符串,但我无法从字符串中获取二维数组。

标签: javaarraysjsonstring

解决方案


您包含的数据部分实际上是args带有字符串值的键[[\"element_1\"],[\"element_2\"],[\"{\\\"payload\\\":\\\"{\\\"Header\\\": \\\"Header_title\\\", \\\"Content\\\": \\\"Content of the payload\\\"}\\\"}\"]]。因此,您无法通过现有 Json 上的方法解码这些内容是正确的,但是您可以将字符串解析为 json 数组,如下所示:

JsonElement jsonElem = new JsonParser().parse(argString);
JsonArray jsonArray = jsonElem.getAsJsonArray();
for(int i = 0; i < jsonArray.size(); i++) {
    System.out.println(jsonArray.get(i));
}

推荐阅读