gpt4 book ai didi

java - Json:使用 Gson 库时出现反序列化错误

转载 作者:行者123 更新时间:2023-11-29 05:42:34 26 4
gpt4 key购买 nike

我有应该转换回 map 类型的 json 字符串。

使用的 Json:

 String jsonString = "{
"varA": "<math><mrow><mn>8</mn></mrow></math>",
"varB": "<math><mrow><mi>m</mi></mrow></math>",
"ans": "<math><mrow><mn>8</mn><mo>&#8290;</mo><mi>m</mi></mrow></math>"
}"

json转Map的代码:

Map<String, String> variableMap = gson.fromJson(jsonString, new TypeToken<Map<String,String>>(){}.getType());

错误:

[ERROR] The JsonDeserializer StringTypeAdapter failed to deserialize json object {"varA":"<math><mrow><mn>8</mn></mrow></math>","varB":"<math><mrow><mi>m</mi></mrow></math>","ans":"<math><mrow><mn>8</mn><mo>&#8290;</mo><mi>m</mi></mrow></math>"} given the type class java.lang.String

我知道它与类型有关,但我已经在类型标记中明确指出类型将是 String。

gson对象声明如下:

Gson gson = new GsonBuilder().disableHtmlEscaping().create();

最佳答案

您必须转义分隔 Java 字符串中包含的 JSON 字符串值的引号。事实上,您的示例不是有效的 Java 程序 - 对于初学者,Java 缺少多行字符串。

以下代码片段运行良好(尖括号和 Unicode 字符无害):

public static void main(String[] args) {
String jsonString = "{\"varA\": \"<math><mrow><mn>8</mn></mrow></math>\", \"varB\": \"<math><mrow><mi>m</mi></mrow></math>\", \"ans\": \"<math><mrow><mn>8</mn><mo>&#8290;</mo><mi>m</mi></mrow></math>\"}";
Map<String, String> variableMap = new Gson().fromJson(jsonString, new TypeToken<Map<String,String>>(){}.getType());
System.out.println("foo");
}

关于java - Json:使用 Gson 库时出现反序列化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16959219/

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