Note that there are some explanatory texts on larger screens.

plurals
  1. POLoop through multiple JSON array
    text
    copied!<p>Here is a snippet of my JSON, it is very long and after the "menu" section it goes back to "Location" and starts over witha new place. I have no idea why but where I loop through and print it to my logcat it will stop at a random place in the "Menu" section and throw an error. I don't understand how to access the whole menu section. </p> <pre><code>{ "locations": [{ "Location": { "id": "1", "name": "Scott Express Cafe", "building": "PKI", "monday_hours": "8am-2:30pm", "tuesday_hours": "8am-2:30pm", "wednesday_hours": "8am-2:30pm", "thursday_hours": "8am-2:30pm", "friday_hours": "8am-2:30pm", "saturday_hours": "Closed", "sunday_hours": "Closed" }, "Section": [{ "id": "3", "location_id": "1", "name": "Snacks", "Location": { "id": "1", "name": "Scott Express Cafe", "building": "PKI", "monday_hours": "8am-2:30pm", "tuesday_hours": "8am-2:30pm", "wednesday_hours": "8am-2:30pm", "thursday_hours": "8am-2:30pm", "friday_hours": "8am-2:30pm", "saturday_hours": "Closed", "sunday_hours": "Closed" }, "Menu": [{ "id": "278", "location_id": "1", "item_name": "Pop-tarts", "price_small": "$1.00", "price_medium": "", "price_large": "", "special": false, "special_start": "", "special_end": "", "details": "", "section_id": "3" }, { "id": "279", "location_id": "1", "item_name": "Cereal Bar", "price_small": "$1.00", "price_medium": "", "price_large": "", "special": false, "special_start": "", "special_end": "", "details": "", "section_id": "3" }, </code></pre> <p><strong>Here is the error:</strong> </p> <pre><code>07-02 20:08:19.878: D/TAG_LOCATIONS(4597): }, 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): { 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): "price_medium": "", 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): "id": "295", 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): "details": "", 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): "price_large": "", 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): "item_name": "Wheat Thins Toasted Chips", 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): "special_end": "", 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): "special_start": "", 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): "section_id": "3", 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): "special": false, 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): "price_small": "$0.85", 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): "location_id": "1" 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): }, 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): { 07-02 20:08:19.878: D/TAG_LOCATIONS(4597): "pric 07-02 20:08:19.888: W/System.err(4597): org.json.JSONException: No value for id 07-02 20:08:19.908: W/System.err(4597): at o rg.json.JSONObject.get(JSONObject.java:354) 07-02 20:08:19.908: W/System.err(4597): at org.json.JSONObject.getString(JSONObject.java:510) 07-02 20:08:19.908: W/System.err(4597): at com.example.androidtablayout.FoodMenuList.onCreate(FoodMenuList.java:87) 07-02 20:08:19.908: W/System.err(4597): at android.app.Activity.performCreate(Activity.java:5104) 07-02 20:08:19.918: W/System.err(4597): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 07-02 20:08:19.918: W/System.err(4597): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 07-02 20:08:19.918: W/System.err(4597): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 07-02 20:08:19.918: W/System.err(4597): at android.app.ActivityThread.access$600(ActivityThread.java:141) 07-02 20:08:19.918: W/System.err(4597): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 07-02 20:08:19.928: W/System.err(4597): at android.os.Handler.dispatchMessage(Handler.java:99) 07-02 20:08:19.939: W/System.err(4597): at android.os.Looper.loop(Looper.java:137) 07-02 20:08:19.939: W/System.err(4597): at android.app.ActivityThread.main(ActivityThread.java:5041) 07-02 20:08:19.948: W/System.err(4597): at java.lang.reflect.Method.invokeNative(Native Method) 07-02 20:08:19.948: W/System.err(4597): at java.lang.reflect.Method.invoke(Method.java:511) 07-02 20:08:19.958: W/System.err(4597): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 07-02 20:08:19.958: W/System.err(4597): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 07-02 20:08:19.958: W/System.err(4597): at dalvik.system.NativeStart.main(Native Method) </code></pre> <p><strong>my Class:</strong> </p> <pre><code>public class FoodMenuList extends Activity { // url to make request for menus private static String url = "http://mavmate.atticdev.ist.unomaha.edu/api/v1/services/getMenus"; // JSON Node names private static final String TAG_LOCATIONS = "locations"; private static final String TAG_LOCATION = "Location"; private static final String TAG_ID = "id"; private static final String TAG_NAME = "name"; private static final String TAG_BUILDING = "building"; // contacts JSONArray JSONArray locations = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.foodmenulist_layout); Bundle extras = getIntent().getExtras(); String locationIDThing = extras.getString("locationID"); // Hashmap for textView ArrayList&lt;HashMap&lt;String, String&gt;&gt; menuItemList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(); // Creating JSON Parser instance JSONParser jParser = new JSONParser(); // getting JSON string from URL JSONObject json = jParser.getJSONFromUrl(url); try { // Getting Array of locations locations = json.getJSONArray(TAG_LOCATIONS); // looping through All locations for(int i = 0; i &lt; locations.length(); i++){ JSONObject c = locations.getJSONObject(i); Log.d("TAG_LOCATIONS", locations.toString(i)); // Storing each json item in variable String id = c.getString(TAG_ID); String name = c.getString(TAG_NAME); String Location = c.getString(TAG_BUILDING); String building = c.getString(TAG_LOCATION); // creating new HashMap HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;(); // adding each child node to HashMap key =&gt; value map.put(TAG_ID, id); map.put(TAG_NAME, name); map.put(TAG_LOCATION, Location); map.put(TAG_BUILDING, building); //map.put(TAG_PHONE_MOBILE, mobile); // adding HashList to ArrayList menuItemList.add(map); } } catch (JSONException e) { e.printStackTrace(); } </code></pre>
 

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