簡體   English   中英

無法使用Map,ObjectMapper解析Json

[英]Unable to parse Json with Map,ObjectMapper

現在有幾天我有Json解析的經驗。沒有太多關於collection的練習。我有一個Json String

{   
    "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]的值; com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromNumber(BeanDeserializer.com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromInt(StdValueInstantiator.java:316)上沒有單個int-arg構造函數/工廠方法。 com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(java:427)(com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringMap(MapDeserializer.java:429)處的BeanDeserializer.java:119) com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:26)上的.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:310) .databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2577)位於com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1817)位於Driver $ 1.run(Driver.java:140)

您在開始時給出的示例是針對單個AuthenticateUser對象的。 是否所有這些都作為輸入傳遞給該程序? 這絕對不會正確解析。

單個AuthenticateUser不是類型為Map(字符串,AuthenticateUser)的映射

我想也許您很困惑,為什么要繪制地圖? 如果您打算僅解析單個對象,那么您需要做的是:

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

System.out.println(user.time);

看起來怎么樣? 您是否以JSON傳遞地圖?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM