2016-03-21 28 views
2

我一直试图反序列化json stirng。不明白问题出在哪里。这是throwing-无法反序列化my.package.name.PlaceData []的实例出START_OBJECT标记

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of my.package.name.PlaceData[] out of START_OBJECT token 
at [Source: [email protected]; line: 1, column: 1] 

我的JSON字符串(placesData)是

{ 
     "d":[ 
     { 
      "__type":"my.package.name.PlaceData", 
      "Id":1212, 
      "Name":"Delhi", 
      "MeetingId":1211, 
      "Sessions":[] 
     }, 
     { 
      "__type":"my.package.name.PlaceData", 
      "Id":8787, 
      "Name":"Bangalore", 
      "MeetingId":1211, 
      "SessionNames":[] 
     } 
     ] 
    } 

Java对象是 -

public class PlaceData { 
    public String __type; 
    public Integer Id; 
    public String Name; 
    public Integer MeetingId; 
    public SessionData[] sessionData=new SessionData[0]; 

    public PlaceData() { 
    } 

    @Override 
    public String toString() { 
     return "PlaceData{" + 
       "__type='" + __type + '\'' + 
       ", Id=" + Id + 
       ", Name='" + Name + '\'' + 
       ", MeetingId=" + MeetingId + 
       ", SessionData=" + Arrays.toString(SessionData) + 
       '}'; 
    } } 

反序列化代码 -

ObjectMapper mapper = new ObjectMapper(); 
List<PlaceData> placesList = Arrays.asList(mapper.readValue(placesData, PlaceData[].class)); 

任何线索?

回答

1

它看起来像你反序列化一个对象而不是一个数组。 START_OBJECT标记指向开放{方括号。您可以从该对象的属性'd'中访问实际数据。

+0

非常感谢您的回复。你能否多描述一下。给定的json如何反序列化? – JohnC

+1

尝试反序列化为Map >,然后使用map.get(“d”)获取您的列表 –

+0

非常感谢!有效。我将它添加为 - 'TypeReference > typeRef = new TypeReference >(){};
HashMap response = mapper.readValue(placesData,typeRef);' – JohnC

相关问题