【发布时间】:2017-03-22 02:35:38
【问题描述】:
很抱歉重复了这个问题,但我的问题是其他的。 我有 JSON 解析器方法,我从 json-string 解析到映射。但是 json-string 也有一个 json-string 的值。类似的东西:
{
"status_code":"255",
"data":"{\"user\":{\"idpolzovatel\":1,\"id_poluch_tip\":1,\"fio_polzovatel\":\"Andrew Artificial\",\"login\":\"imi\",\"parol\":\"698d51a19d8a121ce581499d7b701668\",\"key\":null,\"nachalnik\":1,\"buhgalter\":0,\"delopr\":1},\"token\":\"230047517dd122c8f8116a6fa591a704\"}",
"message":"Successfull!"
}
所以,我的解析方法:
public Map<String, String> convertToMapFromJSON(String res){
ObjectMapper objectMapper = new ObjectMapper();
Map<String, String> response = new HashMap<String, String>();
try {
response = objectMapper.readValue(res, new TypeReference<Map<String, String>>);
int t = 0;
} catch (IOException e) {
e.printStackTrace();
}
return response;
}
我在客户端得到响应:
ResponseEntity<String> responseEntity = restTemplate.postForEntity(REST_SERVICE_URI + "/auth/", data, String.class);
得到身体
String res = responseEntity.getBody();//получаем тело запроса в формате JSON
然后使用那些方法:
Map<String, String> response = convertToMapFromJSON(res);
Map<String, String> data1 = convertToMapFromJSON(response.get("data"));
Map<String, String> userDetailes = convertToMapFromJSON(data1.get("user"));
但是,当我使用最后一种方法data1.get("user"); 时,我得到了异常:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.lang.String
好的,知道了。所以,data1.get("user") 不是字符串,它是linkedHashMap。所以,我可以这样做:
Map<String, String> userDetailes = data1.get("user");
?但后来我得到错误,IDE 说我,data1.get("user") 是一个字符串。
那么,如何使用我的用户数据获取这个 LinkedHashMap?对不起我的英语不好。谢谢。
【问题讨论】:
-
有时 SDE 有问题;尝试清理项目并重建...并尝试从命令行(maven 或 javac)构建,这样您就不会依赖 IDE 编译器
-
使用真实的 JSON 有效负载和使用的库(杰克逊?)更新您的问题
-
更新问题。是的,我用过 Jackson 库。
标签: java json parsing hashmap linkedhashmap