Java 未能反序列化要映射的json对象

Java 未能反序列化要映射的json对象,java,json,Java,Json,我知道关于这个问题也有类似的帖子,但请仔细阅读后再标记为重复 我有一个文本字符串,我想将其转换为JSON行/实例,然后转换为Java映射变量,这样我就可以单独访问每个属性。 这是我的字符串: {"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", "S

我知道关于这个问题也有类似的帖子,但请仔细阅读后再标记为重复

我有一个文本字符串,我想将其转换为JSON行/实例,然后转换为Java映射变量,这样我就可以单独访问每个属性。 这是我的字符串:

{"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);
Type Type=new-TypeToken(){}.getType();
Map retMap=gson.fromJson(json,类型);
当我尝试打印retMap时,我得到一个错误:JsonDeserializer MapTypeAdapter未能将json对象反序列化为映射

我做错了什么?
谢谢。

您的Java字符串
s
已经是JSON格式(即“JSON行/实例”),因此您不需要在其上调用
gson.toJson()
(这会将其转换为JSON字符串,而不是JSON映射,因此无法将其解析为JSON映射)

试试看:

Type type = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> retMap = gson.fromJson(s,type);
Type Type=new-TypeToken(){}.getType();
Map retMap=gson.fromJson(s,type);

第一个使用的字符串已经是JSON,第二个是转义的JSON,因此无法反序列化