[英]Failed to deserialize json object to map
我知道也有与此问题类似的帖子,但在标记为重复之前请仔细阅读。
我有一个文本字符串,我想将其转换为JSON行/实例,然后再转换为Java map变量,因此可以分别访问每个属性。 这是我的字符串:
{"S3_r5_Ahf": "0.00025", "S15_r6_Alf": "-0.00514", "S6_r4_Alf": "-0.00126", "S12_r9_Alf": "-0.00595", "S13_r8_Ahf": "0.00018", "S1_r9_Alf": "-0.00385", "S8_r10_Alf": "-0.00849" }
使用GSON库,我使用以下命令将字符串转换为json对象:
Gson gson = new Gson();
String json = gson.toJson(s);
这很有效,输出为:
"{\"S3_r5_Ahf\": \"0.00025\", \"S15_r6_Alf\": \"-0.00514\", \"S6_r4_Alf\": \"-0.00126\", \"S12_r9_Alf\": \"-0.00595\", \"S13_r8_Ahf\": \"0.00018\", \"S1_r9_Alf\": \"-0.00385\", \"S8_r10_Alf\": \"-0.00849\"
问题是当我尝试使用以下方法将其转换为地图时:
Type type = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> retMap = gson.fromJson(json,type);
当我尝试打印retMap时,出现错误:JsonDeserializer MapTypeAdapter无法反序列化要映射的json对象。
我究竟做错了什么? 谢谢。
您的Java字符串s
已经是JSON格式(即“ JSON行/实例”),因此您无需在其上调用gson.toJson()
(这会将其转换为JSON字符串,而不是JSON)地图,因此无法解析为一个)。
你试一试:
Type type = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> retMap = gson.fromJson(s,type);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.