2012-11-06 4 views
1

Теперь дни я, имеющими опыт Js разборе .Ны имеет много практики с collection.I имеют Json СтрокуНевозможно разобрать JSON с картой, ObjectMapper

{ 
    "time":1352113682, 
    "api_version":"1", 
    "firstname":"abc", 
    "lastname":"xyz", 
    "company":"Cool Apps", 
    "email":"[email protected]" 
} 

Я сделал класс

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: не удается создать значение типа [простой тип, класс AuthenticateUser] из интегрального числа JSON; no one-int-arg constructor/factory method at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromInt (StdValueInstantiator.java:316) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromNumber (BeanDeserializer.java:427) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize (BeanDeserializer.java:119) at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringMap (MapDeserializer.java: 429) at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize (MapDeserializer.java:310) at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize (MapDeserializer.java:26) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose (ObjectMapper.java:2577) на com.fasterxml.jackson.databind.ObjectMapper.readValue (ObjectMapper.java:1817) в Driver $ 1.Run (Driver.java:140)

ответ

0

На примере вы дали в начале для одного объекта AuthenticateUser , Это все, что передается этой программе в качестве входных данных? Это абсолютно не будет правильно анализироваться.

Один AuthenticateUser не карта типа (String, AuthenticateUser)

Я думаю, может быть, вы в замешательстве, почему вы делаете карту? Если вы намереваетесь разбирать только один объект, все, что вам нужно:

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

System.out.println(user.time); 

Как это выглядит? Вы проезжаете карту в JSON?

Смежные вопросы