I am trying to get a list of objects into an array, it works fine when the objects are all good, but when i get 4000 records its hard to see which one is malformed. How can i check which part of the string is malformed or skip that specific object.. it would be better if i can pin point where it is getting malformed but like i said, with 4000 records the error does not help me much. Here is my code:
JsonParser parser = new JsonParser();
JsonReader jreader = new JsonReader(new StringReader(result));
jreader.setLenient(true);
JsonElement elem = parser.parse(reader); //throws malformed json error
JsonArray contacts = elem.getAsJsonArray();
Gson converter = new Gson();
ContactObject obj = null;
Type cons = new TypeToken<ArrayList<Contact>>(){}.getType();
temp = converter.fromJson(contacts, cons);
Here is the error:
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 38670
at com.google.gson.internal.Streams.parse(Streams.java:56)
at com.google.gson.JsonParser.parse(JsonParser.java:84)
at com.android.companya.ContactServer$APICalls.doInBackground(APIServer.java:737)
at com.android.companya.ContactServer$APICalls.doInBackground(APIServer.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)
Caused by: com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 38670
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1310)
at com.google.gson.stream.JsonReader.nextInObject(JsonReader.java:722)
at com.google.gson.stream.JsonReader.peek(JsonReader.java:382)
at com.google.gson.stream.JsonReader.hasNext(JsonReader.java:349)
at com.google.gson.internal.bind.TypeAdapters$25.read(TypeAdapters.java:657)
at com.google.gson.internal.bind.TypeAdapters$25.read(TypeAdapters.java:650)
at com.google.gson.internal.bind.TypeAdapters$25.read(TypeAdapters.java:633)
at com.google.gson.internal.Streams.parse(Streams.java:44)
JSONObjectorJSONArrayare loop through it yourself?