Note that there are some explanatory texts on larger screens.

plurals
  1. POGSON throwing “Expected Expected a name but was NUMBER at line 1 column 8”?
    primarykey
    data
    text
    <p>I'm trying to parse a JSON string like this one ( generated URL with <a href="http://www.json-generator.com" rel="nofollow">http://www.json-generator.com</a>) </p> <pre><code>{ "total": 86, "jsonrpc": "2.0", "id": 1, "result": [ { "startDate": "14/03/2012", "meetingId": "1330", "creator": "Jhon", "lastModified": "02/04/2012", "meetingTitle": "task clarification", "location": "Conf hall", "startTime": "02:00 PM", "createdDate": "14/03/2012", "owner": "Peter", "endTime": "02:30 PM" }, { "startDate": "20/03/2012", "meetingId": "1396", "creator": "Mr.Hobbs", "lastModified": "07/09/2012", "meetingTitle": "Design Work", "location": "South conf Room", "startTime": "03:30 PM", "createdDate": "19/03/2012", "owner": "Steve Jobs", "endTime": "04:30 PM" }, { "startDate": "22/03/2012", "meetingId": "1432", "creator": "Robin", "lastModified": "21/03/2012", "meetingTitle": "Do something new", "location": "NA", "startTime": "10:00 AM", "createdDate": "21/03/2012", "owner": "Mr.Bean", "endTime": "11:00 AM" } ] </code></pre> <p>}</p> <p>Here's an object class I'm using:</p> <pre><code>public class Country { String startDate; String meetingId; String creator; String lastModified; String meetingTitle; String location; String startTime; String createdDate; String owner; String endTime; public String getStartDate() { return startDate; } public void setStartDate(String startDate) { this.startDate = startDate; } public String getMeetingId() { return meetingId; } public void setMeetingId(String meetingId) { this.meetingId = meetingId; } public String getCreator() { return creator; } public void setCreator(String creator) { this.creator = creator; } public String getLastModified() { return lastModified; } public void setLastModified(String lastModified) { this.lastModified = lastModified; } public String getMeetingTitle() { return meetingTitle; } public void setMeetingTitle(String meetingTitle) { this.meetingTitle = meetingTitle; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public String getStartTime() { return startTime; } public void setStartTime(String startTime) { this.startTime = startTime; } public String getCreatedDate() { return createdDate; } public void setCreatedDate(String createdDate) { this.createdDate = createdDate; } public String getOwner() { return owner; } public void setOwner(String owner) { this.owner = owner; } public String getEndTime() { return endTime; } public void setEndTime(String endTime) { this.endTime = endTime; } } </code></pre> <p>But it throws me with: </p> <pre><code> W/JSONStreamReader(1153): java.lang.IllegalStateException: Expected a name but was NUMBER at line 1 column 8 08-09 01:21:37.629: W/JSONStreamReader(1153): java.lang.IllegalStateException: Expected a name but was NUMBER at line 1 column 8 08-09 01:21:37.629: W/JSONStreamReader(1153): at com.google.gson.stream.JsonReader.nextName(JsonReader.java:785) 08-09 01:21:37.629: W/JSONStreamReader(1153): at com.example.gsontest.MainActivity$MyAsyncTask.doInBackground(MainActivity.java:162) </code></pre> <p>in Json "id": 1, is the number! is that is the reason? I'm generating JSON with <strong><a href="http://www.json-generator.com" rel="nofollow">http://www.json-generator.com</a></strong> </p> <p>My Aysc Code for Parsing Json:</p> <pre><code> private class MyAsyncTask extends AsyncTask&lt;String, Void, Void&gt; { private static final int REGISTRATION_TIMEOUT = 3 * 1000; private static final int WAIT_TIMEOUT = 30 * 1000; private final HttpClient httpclient = new DefaultHttpClient(); final HttpParams params = httpclient.getParams(); private boolean error = false; protected Void doInBackground(String... urls) { String URL = null; Log.d("ConnManagerParams", "ok?"); try { // URL passed to the AsyncTask URL = urls[0]; HttpConnectionParams.setConnectionTimeout(params, REGISTRATION_TIMEOUT); HttpConnectionParams.setSoTimeout(params, WAIT_TIMEOUT); ConnManagerParams.setTimeout(params, WAIT_TIMEOUT); Log.d("ConnManagerParams", "ok?"); HttpPost httpPost = new HttpPost(URL); Log.d("httpPost", "ok?"); // Response from the Http Request HttpResponse response = httpclient.execute(httpPost); Log.d("response", "ok?"); // Check the Http Request for success StatusLine statusLine = response.getStatusLine(); Log.d("statusLine", response.getStatusLine().toString()); // Log.d("RESPONSE", // EntityUtils.toString(response.getEntity())); if (statusLine.getStatusCode() == HttpStatus.SC_OK) { // Log.d("statusok", statusLine.getStatusCode()); Gson gson = new Gson(); // create a new JSON reader from the response input stream Log.d("gson", "gson?"); JsonReader jsonReader = new JsonReader( new InputStreamReader(response.getEntity() .getContent(), "UTF-8")); // begin parsing Log.d("AFTjsonReader", "AFTjsonReader?"); jsonReader.beginObject(); Log.d("beginObject", "beginObject?"); // stay in loop as long as there are more data elements while (jsonReader.hasNext()) { // get the element name Log.d("whilejsonReader", "whilejsonReader?"); // String name = jsonReader.nextName(); Log.d("nextName", jsonReader.nextName()); String name = jsonReader.nextName(); Log.d("nextNametest2", "nextName?"); if (name.equals("result")) { Log.d("result", "result?"); jsonReader.beginArray(); while (jsonReader.hasNext()) { // parse every element and convert that to a // country object Country country = gson.fromJson(jsonReader, Country.class); // add the country object to the list countryList.add(country); } jsonReader.endArray(); } // success = jsonReader.nextBoolean(); success = true; } // end reader and close the stream jsonReader.endObject(); jsonReader.close(); } else { // Closes the connection. Log.d("Closes the connection.", "Closes the connection.?"); Log.w(LOG_TAG, statusLine.getReasonPhrase()); response.getEntity().getContent().close(); throw new IOException(statusLine.getReasonPhrase()); } } catch (Exception e) { Log.d("catch", "catch"); Log.w(LOG_TAG, e); error = true; cancel(true); } return null; } protected void onCancelled() { Log.e(LOG_TAG, "Error occured during data download"); } protected void onPostExecute(Void unused) { if (error) { Log.e(LOG_TAG, "Data download ended abnormally!"); } else { displayCountries(); } } } } </code></pre> <p>Any ideas how should I fix it?</p> <p>Thanks!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload