2016-04-09 19 views
1

JavaクラスにJSON Stringをマップしようとしましたが、機能しません。ジャクソンライブラリを使用して、ここに私のコードです。 入力JSON:jacksonを使ってjsonリストをJavaオブジェクトに逆シリアル化する方法

{ 
    "code":"1", 
    "message":"1", 
    "result":[ 
     { 
     "serviceid":"13", 
     "servicename":"service1", 
     "price":"78000", 
     "amount":"2048" 
     }, 
     { 
     "serviceid":"14", 
     "servicename":"service2", 
     "price":"118000", 
     "amount":"3072" 
     } 
    ] 
} 

Javaクラス:

public class serviceList 
{ 
    public int serviceid; 
    public String servicename; 
    public double price; 
    public int amount; 
} 

public class serviceList_result 
{ 
    public String code; 
    public String message; 
    public ArrayList<serviceList> result; 

    public serviceList_result() 
    { 
     result = new ArrayList<serviceList>(); 
    } 

} 

私は

serviceList_result srv= mapper.readValue(jsonInString, TypeFactory.defaultInstance().constructCollectionType(ArrayList.class,serviceList_result.class)); 

エラーmapplingために、このコードを使用しています:

は、Javaのインスタンスをデシリアライズすることはできません。 util.ArrayListのうち START_OBJECT

私のコードで何が間違っていますか?これにより

serviceList_result srv= mapper.readValue(jsonInString, TypeFactory.defaultInstance().constructCollectionType(ArrayList.class,serviceList_result.class)); 

あなたがコレクションすなわち[ ... ]をデシリアライズしたいことを言っている:あなたのコードでは、このための必要はありません

答えて

0

代わりに、単純に実行します。

serviceList_result srv= mapper.readValue(json, serviceList_result.class); 

ジャクソンライブラリは、クラス定義からserviceList_resultオブジェクトを作成する方法を見つけ出すだろう。

+0

ありがとうございます。 – Oli

関連する問題