我有一个json字符串,应该转换回Map类型。
使用的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>⁢</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>⁢</mo><mi>m</mi></mrow></math>"} given the type class java.lang.String
我知道它与类型有关,但是我已经指出类型将在类型标记中显式地为string。
gson对象声明如下:
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
2条答案
按热度按时间wpcxdonn1#
必须对限定java字符串中包含的json字符串值的引号进行转义。事实上,您的示例不是一个有效的java程序—java缺少多行字符串。
下面的代码段运行得很好(尖括号和unicode字符被证明是无害的):
gv8xihay2#
当你使用
Map.class
而不是新的TypeToken<Map<String,String>>(){}.getType()
. 看看我的小例子:它打印: