15

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

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は次のようになります。

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

1 に答える 1

19

BusinessPartnerCreateいいえ、jsonオブジェクトはではなく、が含まれているため、正しくマッピングされていませんBusinessPartnerCreate

をカプセル化するためだけにクラスを作成できますBusinessPartnerCreateが、コンテナをjsonObject使用として逆シリアル化する方がクリーンです。

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

次に、を使用して興味深いコンテンツを解析します

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

そして、partnerTypeフィールドの適切なマッピングを確実にするために注釈を追加することをお勧めします:

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

(および郵便番号についても同様)

于 2012-06-26T19:37:53.790 に答える