2012-06-26 1 views
15

JSONをオブジェクトにアンマーシャリングしようとするとGSONエラーが発生します。エラー(BEGIN_OBJECTが期待されていましたが、3行目の列22のSTRINGでした)は、以下の入力の3行目を指しています。GSON:BEGIN_OBJECTが必要ですがSTRINGでした

私はBeanに関してJSONを正しくマッピングしていませんか?

import javax.xml.bind.JAXBElement; 

public class BusinessPartnerCreate { 
    protected JAXBElement<String> partnerType; 
    protected Person person; 
    protected Company company; 
    protected String email; 
    protected String phone; 
    protected AddressData addressData; 
    protected AddressClean addressClean; 
    protected String city; 
    protected String state; 
    protected String zipCode; 
    protected JAXBElement<String> externalId; 
} 

そして、私の入力JSONが見えるが、これである:あなたのJSONオブジェクトがBusinessPartnerCreateないとして、あなたがそれを正しくマッピングされていませんでした

{ 
    "business-partner-create": { 
     "partner-type": "1", 
     "person": { 
      "firstName": "Dirk", 
      "lastName": "Wintermill", 
      "title": "" 
     }, 
     "email": "[email protected]", 
     "phone": "219-385-2946", 
     "addressClean": { 
      "house-number": "10218", 
      "street-name": "Park", 
      "street-abbr": "Rd" 
     }, 
     "city": "Somerset", 
     "state": "NJ", 
     "zip-code": "01955" 
    } 
} 

答えて

18

いいえ、それはBusinessPartnerCreateが含まれています。

あなたは自分のBusinessPartnerCreateをカプセル化するクラスを作成することができますが、

JsonParser parser = new JsonParser(); 
JsonObject obj = parser.parse(json).getAsJsonObject(); 

を使用してjsonObjectとしてコンテナをデシリアライズするためにきれいにしてから

BusinessPartnerCreate bpc = gson.fromJson(obj.get("business-partner-create"), BusinessPartnerCreate.class); 

そして私を使って面白いコンテンツを解析しますフィールドの適切なマッピングを確実にするために注釈を追加することをおすすめします。

@SerializedName "partner-type" 
    protected JAXBElement<String> partnerType; 

(郵便番号も同様)

関連する問題