2012-06-26 206 views
15

我收到一個GSON錯誤,試圖將JSON解組到一個對象中。錯誤(預期BEGIN_OBJECT,但在第3行第22列 STRING)指向下面的輸入的第3行。GSON:預計BEGIN_OBJECT,但是STRING

我有沒有正確地映射JSON相對於Bean?

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看起來是這樣的:

{ 
    "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

不,你沒有正確地爲您的JSON對象不是BusinessPartnerCreate,它包含了BusinessPartnerCreate映射它。

您可以創建一個類只是爲了封裝你BusinessPartnerCreate但它是清潔使用

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

反序列化容器作爲jsonObject,然後解析使用

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

我的有趣內容建議您添加註釋以確保partnerType字段的正確映射:

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

(以及類似的郵政編碼)

相關問題