Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

get array of KEYS for each element under jsonarray

I want to parse my Json array dynamically. and want to get array of KEYS for each element under jsonarray. i an getting this through iterator. but not getting the sequeance as per the output json formate.

my JSON Formate :

{
  "result": "Success",
  "AlertDetails": [
    {
      "ShipmentNumber": "SHP34",
      "Customer": "BEST",
      "DateCreated": "2012-08-29T04:59:18Z"
      "CustomerName": "BEST"
    },
    {
      "ShipmentNumber": "SHP22",
      "Customer": "BEST",
      "DateCreated": "2012-08-29T05:34:18Z"
      "CustomerName": "Jelly"
    }
  ]
}

here is My Code :

    JSONArray array = jsonobject.getJSONArray("AlertDetails");

    JSONObject keyarray = array.getJSONObject(0);
    Iterator temp = keyarray.keys();
        while (temp.hasNext()) {
                    String curentkey = (String) temp.next();
                    KEYS.add(curentkey);

    }
Log.d("Parsing Json class", "  ---- KEYS---- " + KEYS);

What i am getting in logcate output:

 ---- KEYS---- [DateCreated,CustomerName, Customer, ShipmentNumber]

What i want :

 ---- KEYS---- [ShipmentNumber, Customer, DateCreated,CustomerName]
like image 967
Bhavesh Patadiya Avatar asked Aug 29 '12 10:08

Bhavesh Patadiya


3 Answers

The JSONObject documentation (link: http://developer.android.com/reference/org/json/JSONObject.html) has the following description for the keys() function:

public Iterator keys ()

Since: API Level 1

Returns an iterator of the String names in this object. The returned iterator supports remove, which will remove the corresponding mapping from this object. If this object is modified after the iterator is returned, the iterator's behavior is undefined. The order of the keys is undefined.

So you may get the keys but the order is undefined. You may use any of the sorting algorithms if you want the keys in any particular order.

EDIT

Since you are unaware of the order of KEYS you are getting from the WS, after receiving the data you may show the details on screen in an ordered format . After building the arraylist KEYS, you may sort it alphabetically using the following:

Collections.sort(KEYS);  

This will order the Strings in the KEYS arraylist according to its natural ordering (which is alphabetically).

like image 107
Arun George Avatar answered Nov 06 '22 09:11

Arun George


I just come to know when I press ctlr+space bar, in which its clearly written that behavior of the keys is undefined, orders is not maintain by keys.

enter image description here

Arun George said@ correctly that you have to use any sorting method to achieve your goal.

and for sorting may be this link will help you.

like image 38
RobinHood Avatar answered Nov 06 '22 10:11

RobinHood


Use GSON library from google. It has a a lot of setting to read/create/parse json array and json objects. I didn't test it to find the solution, but I think it's very simple and full featured tool and can solve the problem.

like image 6
Behnam Avatar answered Nov 06 '22 08:11

Behnam