2016-03-21 14 views
2

私はjson攪拌を逆シリアル化しようとしています。問題がどこにあるのか理解していない。それは私のJSON文字列(placesData)throwing-START_OBJECTトークンからmy.package.name.PlaceData []のインスタンスを逆シリアル化できません

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] 

{ 
     "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 >(){};
ハッシュマップレスポンス= mapper.readValue(placesData、typeRef); ' – JohnC

関連する問題