gpt4 book ai didi

java - 我如何用 Gson java 解析这个转义的 Json?

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:37 26 4
gpt4 key购买 nike

所以我收到了如下我无法控制的回复:

{
"message": "someName someLastName has sent you a question",
"parameters": "{\"firstName\":\"someName\",\"lastName\":\"someLastName\"}",
"id": 141
}

乍一看似乎很简单,但参数元素需要作为 json 对象读取,我无法为我的生活弄清楚如何去做。这就是我目前正在尝试的:

JsonObject parameters = data.getAsJsonObject().get("parameters").getAsJsonObject();
/throws java.lang.IllegalStateException: Not a JSON Object: "{\"firstName\":\"someName\",\"lastName\":\"someLastName\"}"

所以我尝试了:

String elementToString = data.getAsJsonObject().get("parameters").toString().replace("\\\"", "\"");
JsonObject parameters = new Gson().fromJson(elementToString, JsonElement.class).getAsJsonObject();
//throws com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 5 path $

数据在哪里(通常是从服务器中提取的):

JsonElement data = new Gson().fromJson("  {\n" +
" \"message\": \"someName someLastName has sent you a question\",\n" +
" \"parameters\": \"{\\\"firstName\\\":\\\"someName\\\",\\\"lastName\\\":\\\"someLastName\\\"}\",\n" +
" \"id\": 141\n" +
" }", JsonElement.class);

这不是一道难题吗?

最佳答案

这里有什么

"parameters": "{\"firstName\":\"someName\",\"lastName\":\"someLastName\"}",

是一个 JSON 对,其中名称(始终是 JSON 字符串)和值都是 JSON 字符串。该值是一个可以解释为 JSON 对象的字符串。所以就这样做吧

String jsonString = data.getAsJsonObject().get("parameters").getAsJsonPrimitive().getAsString(); 
JsonObject parameters = gson.fromJson(jsonString, JsonObject.class);

以下内容

Gson gson = new Gson();
JsonElement data = gson
.fromJson(" {\n" + " \"message\": \"someName someLastName has sent you a question\",\n"
+ " \"parameters\": \"{\\\"firstName\\\":\\\"someName\\\",\\\"lastName\\\":\\\"someLastName\\\"}\",\n"
+ " \"id\": 141\n" + " }", JsonElement.class);
String jsonString = data.getAsJsonObject().get("parameters").getAsJsonPrimitive().getAsString();
JsonObject parameters = gson.fromJson(jsonString, JsonObject.class);
System.out.println(parameters);

打印 JsonObject

的 JSON 文本表示
{"firstName":"someName","lastName":"someLastName"}

关于java - 我如何用 Gson java 解析这个转义的 Json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34427279/

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