繁体   English   中英

无法反序列化json对象以进行映射

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM