Mein Server sendet die Daten wie folgt. Ich benutze Gson, um diese Daten zu analysieren. Aber es ist mit folgenden Ausnahme versagt:Gson Antwort Parsing mit doppelten Anführungszeichen im Array
{
"users":[
{
"config":{
"identifiers":{
"id":"7"
},
"v_id":[
"335",
"Product User "
],
"m_id":[
"3530",
"4744"
],
"expand":{
"chategory":[
{
"identifiers":{
"id":"3"
},
"catConfig":{
"security":"Private"
}
}
],
"hobby":[
{
"identifiers":{
"id":"200",
"d_id":[
"Playing \"Football\"",
"Music",
"Dancing",
"Browsing"
]
},
"type":"Output"
}
]
}
}
}
]
}
Exception
org.json.JSONException: Unterminated array at character 183 of "chategory":[{"identifiers":{"id":"3"},"catConfig":{"security":"Private"}}],"hobby":[{"identifiers":{"id":"200","d_id":["Playing"Football"","Music","Dancing","Browsing"]},"type":"Output"}]},
at org.json.JSONTokener.syntaxError(JSONTokener.java:450)
at org.json.JSONTokener.readArray(JSONTokener.java:440)
at org.json.JSONTokener.nextValue(JSONTokener.java:103)
at org.json.JSONTokener.readObject(JSONTokener.java:385)
at org.json.JSONTokener.nextValue(JSONTokener.java:100)
at org.json.JSONTokener.readObject(JSONTokener.java:385)
at org.json.JSONTokener.nextValue(JSONTokener.java:100)
at org.json.JSONTokener.readArray(JSONTokener.java:430)
at org.json.JSONTokener.nextValue(JSONTokener.java:103)
at org.json.JSONTokener.readObject(JSONTokener.java:385)
at org.json.JSONTokener.nextValue(JSONTokener.java:100)
at org.json.JSONObject.<init>(JSONObject.java:156)
at org.json.JSONObject.<init>(JSONObject.java:173)
at honeywell.security.isom.customformatter.ExpansionJsonConverter.convertJsonStringIntoHashMap(ExpansionJsonConverter.java:80)
at honeywell.security.isom.customformatter.ExpansionJsonConverter.read(ExpansionJsonConverter.java:64)
at honeywell.security.isom.customformatter.ExpansionJsonConverter.read(ExpansionJsonConverter.java:22)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:118)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:253)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:118)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:253)
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:118)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:253)
at com.google.gson.Gson.fromJson(Gson.java:981)
at honeywell.security.isom.client.proxybase.BaseControllerProxy.deserializeTheResponse(BaseControllerProxy.java:554)
at honeywell.security.isom.client.proxybase.BaseControllerProxy.excuteRequest(BaseControllerProxy.java:321)
at honeywell.security.isom.client.proxybase.BaseControllerProxy.prepareDetailsToSendRequest(BaseControllerProxy.java:421)
at honeywell.security.isom.client.proxybase.BaseControllerProxy.executeGETMethod(BaseControllerProxy.java:123)
at honeywell.security.isom.client.proxycontroller.PeripheralsControllerProxy.getperipheralentitylist(PeripheralsControllerProxy.java:44)
at com.mpcthreadlib.request.RequestISOM.getISOMRequest(RequestISOM.java:557)
at com.mpcthreadlib.manage.RequestThread.executeRequest(RequestThread.java:102)
at com.mpcthreadlib.manage.RequestThread.run(RequestThread.java:71)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
HINWEIS Die Eingabe mit Escape-Sequenz war, wo, wie die Gson beschwerte Schnur nicht tut, hat. Wenn es ein normales JsonObject anstelle von JsonArray ist, funktioniert es gut.
Was könnte das Problem sein?
Bitte setzen Java Bean-Klasse für Gson – Palak
@Palak macht das wirklich nötig? Deserialisierung aufgrund doppelten Anführungszeichens. –
@Palak, die gleiche Antwort funktioniert, wenn es kein Anführungszeichen enthält. –