很抱歉重复了这个问题,但我的问题是其他的。我有一个从json-string解析到map的JSON解析器方法。但是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"));
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.lang.String
Map<String, String> userDetailes = data1.get("user");
?但是随后我得到一个错误,IDE告诉我,data1.get(“user”)
是一个字符串。
那么,我如何用我的UserData获得这个LinkedHashMap呢?对不起,为了我的英语。谢谢你。
Java为泛型应用类型擦除。它在编译时检查类型的正确性,然后删除编译代码(字节码)中的泛型签名。因此,在运行时没有检查。
请参见此示例,其行为与您的JSON库相同:
/** Returns a generic map which all keys are string but not values **/
T <T extends Map> raw(Class<T> clazz) {
Map object = new LinkedHashMap();
object.put("string", "This is a String");
object.put("map" , new LinkedHashMap());
return (T) object;
}
以下是您的代码:
/** codes you try to execute/write **/
void withStringValues() {
Map<String,String> object = raw(Map<String,String>.class);
String string = object.get("string"); // Ok
String map = object.get("map"); // ClassCastException
Map map = object.get("map"); // Doesn't compile
}
void withTypeErasure() {
Map object = raw(Map.class);
String string = (String) object.get("string");
String map = (String) object.get("map");
}
void withRealValues() {
Map<String,Object> object = raw(Map<String,Object>.class);
String string = (String) object.get("string"); // Ok
Map<String,Object> map = (Map) object.get("map"); // Ok
}
问题内容: 我在JS中有一个JSON对象,我想将其转换为字符串。这是功能吗? 提前致谢, 问题答案: JSON.stringify() 将值转换为JSON,如果指定了replacer函数,则可以选择替换值,如果指定了replacer数组,则可以选择仅包括指定的属性。
问题内容: 我已经开始在golang中工作,我正在尝试解析JSON字符串以构建结构,但无法正常工作。 JSON字符串: 每日”:[{“ userAccessToken”:“ acessToken”,“ uploadStartTimeInSeconds”:1499744832,“ uploadEndTimeInSeconds”:1499744832,“ callbackURL”:“ callback
问题内容: 使用服务器端C#,如何将查询字符串转换为键和值的JSON字符串?例如,我想转换 至 我知道如何手动解析和格式化,但是在走那条路之前,我想问一下,因为可能有一个库可以做得更好。谢谢! 问题答案: 这给出了您想要的完全相同的json
问题内容: 我试过了: 它返回:我期望 如何执行此操作? 问题答案: 不是IDictionary,因此无法直接将其序列化。您首先需要将其转换为字典,然后对其进行序列化。 更新 :关于每个键多个值的问题之后,对的调用将简单地将它们返回,并以逗号分隔,这可能没问题。如果不是,则总是可以调用并决定如何适当地使用这些值。更新了下面的代码以显示一种可能的方法。
问题内容: 我想在我的swift项目中做一个将String转换成Dictionary json格式的函数,但是出现一个错误: 无法转换表达式的类型(@lvalue NSData,options:IntegerLitralConvertible … 这是我的代码: 我在Objective-C中实现此功能: 问题答案: 警告:如果出于某种原因必须使用JSON字符串,这是将JSON字符串转换为字典的便捷