Gsonを使用して、サーバからPOJOオブジェクトへの応答JSON文字列を解析しようとしています。以下は私のJSONです:文字列でエンコードされた内部JSON文書のGson解析エラー
{
"user":{
"id":"859adb60-4a47-4e1b-8f40-10480bfc33ec",
"createdAt":"2017-05-11T07:52:43.661Z",
"updatedAt":"2017-05-11T07:52:43.786Z",
"version":"AAAAAAA0GXQ=",
"deleted":false,
"userName":null,
"bucketId":"7c2b3ce4-ac5d-4e6a-a6c1-d6316c01fcfb",
"userEmailId":"[email protected]",
"signupType":"Custom",
"userAvatar":null,
"userPin":"$2a$10$9TCIqHrE6jDZMr0lhHRddeC7kU.Ob6s8o8zG3ahsmaAMBNi5Gkvwy",
"verified":true,
"verifyHash":"IpkzqvjHGb6nbdxxkvmgLiPJRSRhUJ6wMOO3V7Gz5ispOlpLPtdGMTkldzOwHp3Q",
"thirdPartyToken":null,
"loginAgent":null,
"isDataSetUp":false
},
"colloboratedChildren":[
],
"invitations":[
{
"id":"4892167b-bc6a-47e5-bb30-1785b5643edc",
"createdAt":"2017-05-11T07:52:06.019Z",
"updatedAt":"2017-05-11T07:52:06.019Z",
"version":"AAAAAAA0GWY=",
"deleted":false,
"inviterId":"9d00f972-e66d-400b-b332-f0b873a8b1fd",
"inviterEmail":"[email protected]",
"inviteeId":null,
"inviteeEmail":"[email protected]",
"inviteData":"{\"821e63e7-457e-401f-b071-abacd51bcbad\":[\"B690E26C-BA39-45E3-BB34-CF6EABB666F7\"]}"
}
],
"authToken":"bQYng6AAeCp9HlR1rCZeOCbFUm1LaRfVzcqTWpgXiLul3tFj7Y4hKr997V6hvl6d"
}
ここは私のPOJOクラスです。
@Getter
@Setter
public class LoginResponse {
User user;
ArrayList<ColloboratedChildren> colloboratedChildren;
ArrayList<InvitationResponse> invitations;
String authToken;
}
@Getter
@Setter
public class User extends BucketAzureModel {
private String signupType;
private String userAvatar;
private String userEmailId;
private String userName;
private String userPin;
}
@Getter
@Setter
ColloboratedChildren {}
public class InvitationResponse {
String id;
String createdAt;
String updatedAt;
String version;
boolean deleted;
String inviterId;
String inviterEmail;
String inviteeId;
String inviteeEmail;
Map<String, ArrayList<String>> inviteData;
}
のPOJOにJSONに変換されたコード:私はGsonは{
を期待していることを理解し
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at path $.invitations[0].inviteData
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:129)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:220)
at com.google.gson.Gson.fromJson(Gson.java:887)
at com.google.gson.Gson.fromJson(Gson.java:952)
at com.google.gson.Gson.fromJson(Gson.java:925)
at com.microsoft.windowsazure.mobileservices.table.serialization.JsonEntityParser.parseResults(JsonEntityParser.java:64)
エラーから:ここで
JsonEntityParser.parseResults(jsonElement, gsonBuilder.create(), concreteClass);
は、私が直面していますエラーですここには"
がありますが、inviteData
にMap<String, ArrayList<String>>
を作成する方法を正確に理解していません。私は実際に着信JSONを解析するために私のPOJOをどのように定義するのかは分かりません。私はJSONの形式を変更することはできませんので、私はこの形式のみを守らなければなりません。どんな助けでも本当に感謝しています。
重複している可能性があります[「BEGIN_OBJECTが必要ですが、1行目の列1でSTRINGでした」](http://stackoverflow.com/questions/28418662/expected-begin-object-but-was-string-at-line-1-列1) –
@ user7790438いいえ、それはその複製ではありません。私たちのポスターは、エラーメッセージの意味を知っていますが、GSONに自分が望むことをする方法を知らないのです。非常に異なる質問です。 – ajb