无法从START_OBJECT标记中反序列化my.package.name.PlaceData []的实例

时间:2016-03-21 11:24:47

标签: java json parsing deserialization

我一直试图将json stirng反序列化。不明白问题出在哪里。它在扔 -

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of my.package.name.PlaceData[] out of START_OBJECT token
 at [Source: java.io.StringReader@1fea1293; 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 个答案:

答案 0 :(得分:1)

看起来您正在反序列化对象而不是数组。 START_OBJECT标记指的是开头{括号。您可以从该对象的属性'd'访问实际数据。