gpt4 book ai didi

java - 如何使用 GSON 解析漂亮的 JSON

转载 作者:行者123 更新时间:2023-11-30 05:33:31 25 4
gpt4 key购买 nike

我正在连接到一些 API。这些调用返回一个已经“ pretty-print ”的 JSON,而不是一行 JSON。

示例:

[
{
"Field1.1": "Value1.1",
"Field1.2": "value1.2",
"Field1.3": "Value1.3"
},
{
"Field2.1": "Value2.1",
"Field2.2": "value2.2",
"Field2.3": "Value2.3"
}
]

当我尝试使用 GSON 解析这样的 JSON 时,它会抛出 JsonSyntaxException。

代码示例:

BufferedReader br = /*Extracting response from server*/
JsonElement jelement = new JsonParser().parse(br.readLine())

有没有办法解析这样格式的 JSON 文件?

编辑:

我尝试直接使用Gson:

BufferedReader jsonBuf = ....
Gson gson = new Gson();
JsonObject jobj = gson.fromJson(jsonBuf, JsonObject.class)

但是当代码终止时,jobj 为 NULL。

我还尝试将 BufferedReader 中包含的字符串解析为单行字符串,然后对其使用 JsonParser:

import org.apache.commons.io.IOUtils
BufferedReader jsonBuf = ....
JsonElement jEl = new JsonParser().parse(IOUtils.toString(jsonBuf).replaceAll("\\s+", "");

但是我最终得到的 JsonElement 是一个 NULL 指针...

我不明白我做错了什么......

最佳答案

BufferedReader::nextLine只读取一行。要么你从你的阅读器读取整个 json String变量或者您将使用例如 Gson::fromJson(Reader, Type) 并将 reader 直接传递给此方法。

由于您的 json 看起来像一个 json 对象数组,因此可以将其反序列化为 List<Map<String,String>>使用TypeToken :

BufferedReader bufferedReader = ...
Type type = new TypeToken<List<Map<String,String>>>(){}.getType();
Gson gson = new Gson();
List<Map<String,String>> newMap = gson.fromJson(bufferedReader, type);

您还可以使用一些自定义对象来代替 Map根据您的需要。

关于java - 如何使用 GSON 解析漂亮的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57080171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com