gpt4 book ai didi

java - 无法用Map、ObjectMapper解析Json

转载 作者:行者123 更新时间:2023-12-01 05:02:08 24 4
gpt4 key购买 nike

现在我有 Json 解析的经验。对集合没有太多练习。我有一个 Json 字符串

{   
"time":1352113682,
"api_version":"1",
"firstname":"abc",
"lastname":"xyz",
"company":"Cool Apps",
"email":"abc@apps.com.au"
}

我上课了

public class AuthenticateUser implements Serializable{

// Response when Successfully Login
public String time;
public String api_version;
public String firstname;
public String lastname;
public String company;
public String email;

}

并尝试像这样解析它

Map<String, AuthenticateUser> map=null;
ObjectMapper mapper=new ObjectMapper();
try{
map=mapper.readValue(result,new TypeReference<Map<String, AuthenticateUser>>(){});
Set<String> keys=map.keySet();
for (String key : keys) {
System.out.println(map.get(key).time);
System.out.println(map.get(key).api_version);
System.out.println(map.get(key).firstname);
System.out.println(map.get(key).lastname);
System.out.println(map.get(key).company);
System.out.println(map.get(key).email);
}
}catch (Exception e) {
e.printStackTrace();
}

但是出现这个错误

com.fasterxml.jackson.databind.JsonMappingException:无法从 JSON 整数实例化类型 [简单类型,类 AuthenticateUser] 的值;没有 single-int-arg 构造函数/工厂方法 在 com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromInt(StdValueInstantiator.java:316) 在com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromNumber(BeanDeserializer.java:427) 在com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:119) 在com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringMap(MapDeserializer.java:429) 在com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:310) 在com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:26) 在com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2577) 在com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1817) 在 Driver$1.run(Driver.java:140)

最佳答案

您在开始时给出的示例适用于单个 AuthenticateUser 对象。这就是作为输入传递给该程序的所有内容吗?这绝对无法正确解析。

单个 AuthenticateUser 不是 (String, AuthenticateUser) 类型的 Map

我想你可能很困惑,为什么要制作 map ?如果您只想解析单个对象,您需要的是:

AuthenticateUser user =mapper.readValue(result, AuthenticateUser.class);

System.out.println(user.time);

看起来怎么样?您是否正在传递 JSON 格式的 map ?

关于java - 无法用Map、ObjectMapper解析Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13245506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com