Reputation: 4636
I have the JSON Response like this ::
{
"ResponseCode": "000",
"ResponseDescription": "Successful",
"ResponseData": [
[
"RequestID",
"ProviderAuditID",
"RequestTime",
"Product",
"ProductCode",
"Currency",
"TopUpValue",
"TopUpValueRes",
"TopUpValuePro",
"TransactionResponseCode",
"TransactionResponseDescription"
],
[
"94",
"663",
"2013-08-02 07:02:54",
"Test 1",
"2222",
"IND",
"700.000000",
"700.000000",
"700.000000",
"000",
"Successful"
],
[
"93",
"661",
"2013-08-02 06:21:13",
"Test 2",
"5555",
"IND",
"160.000000",
"160.000000",
"160.000000",
"000",
"Successful"
]
]
}
I am successfully parsed this JSON using the below mechanism ::
final JSONObject jsonObject=new JSONObject(response);
if(jsonObject.getString("ResponseCode").equals("000"))
{
System.out.println("%%%% m inside....");
JSONArray jArray = jsonObject.getJSONArray("ResponseData");
System.out.println(" &&&&&&& ====>"+jArray.length());
for (int i = 0; i < jArray.length(); i++)
{
JSONArray arrValues = (JSONArray) jArray.get(i);
System.out.println(" &&&&&&& Arr ====>"+arrValues);
for (int j = 0; j < arrValues.length(); j++)
{
String value = (String) arrValues.get(j);
System.out.println(" &&&&&&& ArrValues====>"+value);
}
}
}
Log Response :::
Arr ====>["RequestID","ProductType","RequestType","ProviderAuditID","RequestTime","Product","ProductCode","Currency","Batch","ReferenceNumber","TopUpValue","TopUpValueRes","TopUpValuePro","TransactionResponseCode","TransactionResponseDescription"]
ArrValues====>RequestID
ArrValues====>ProductType
ArrValues====>RequestType
ArrValues====>ProviderAuditID
ArrValues====>RequestTime
ArrValues====>Product
ArrValues====>ProductCode
ArrValues====>Currency
ArrValues====>Batch
ArrValues====>ReferenceNumber
ArrValues====>TopUpValue
ArrValues====>TopUpValueRes
ArrValues====>TopUpValuePro
ArrValues====>TransactionResponseCode
ArrValues====>TransactionResponseDescription
Arr ====>["381","1","2","662","2013-08-02 07:01:08","Test 1","7878","IND","Test 1","12121212121","1600.000000","1600.000000000000","1600.000000","000","Successful"]
ArrValues====>381
ArrValues====>1
ArrValues====>2
ArrValues====>662
ArrValues====>2013-08-02 07:01:08
ArrValues====>Test 1
ArrValues====>7878
ArrValues====>IND
ArrValues====>Test 1
ArrValues====>12121212121
ArrValues====>1600.000000
ArrValues====>1600.000000000000
ArrValues====>1600.000000
ArrValues====>000
ArrValues====>Successful
Arr ====>["380","0","1","657","2013-08-02 06:00:46","Test 1","9696","IND","Test 1","1234","900.000000","900.000000000000","900.000000","000","Successful"]
ArrValues====>380
ArrValues====>0
ArrValues====>1
ArrValues====>657
ArrValues====>2013-08-02 06:00:46
ArrValues====>Test 2
ArrValues====>9696
ArrValues====>IND
ArrValues====>Test 2
ArrValues====>1234
ArrValues====>900.000000
ArrValues====>900.000000000000
ArrValues====>900.000000
ArrValues====>000
ArrValues====>Successful
Desired OutPut :::
RequestID :: 381
Product :: Test 1
Currency :: IND
TransactionResponseDescription :: Successful
RequestID :: 380
Product :: Test 2
Currency :: IND
TransactionResponseDescription :: Successful
EDIT ::
The problem for me to store the data is that I don't get the whole array of Request ID or Product. In first array I got all the headers (label) and in the rest of arrays I got the values.
So, I know that at 0th index I always got the RequestID, and so on. So, how to store the value to achieve the desired output?
Upvotes: 2
Views: 1505
Reputation: 5731
ArrayList<String> desc=new ArrayList<String>();
ArrayList<String> prods=new ArrayList<String>();
SparseArray<ArrayList<String>> vals=new SparseArray<ArrayList<String>>();
JSONArray arrValues = (JSONArray) jArray.get(0);// first array, descriptions
System.out.println(" &&&&&&& Arr ====>"+arrValues);
for (int j = 0; j < arrValues.length(); j++)
{
String value = (String) arrValues.get(j);
desc.add(value);
System.out.println(" &&&&&&& ArrValues====>"+value);
}
System.out.println(" &&&&&&& desc ====>"+desc);//IMPORTANT. CHECK THE POSITIONS
for (int i = 1; i < jArray.length(); i++)
{
JSONArray arrValues = (JSONArray) jArray.get(i);// second array onwards, values
prods=new ArrayList<String>();
System.out.println(" &&&&&&& Arr ====>"+arrValues);
for (int j = 0; j < arrValues.length(); j++)
{
String value = (String) arrValues.get(j);
prods.add(value);
System.out.println(" &&&&&&& ArrValues====>"+value);
}
vals.put(i-1, prods);
}
// now, 'desc' & 'vals' will do it. Eg:-
for(int i=0;i<vals.size();i++){
System.out.println("\n"+desc.get(0)+" ::"+vals.get(i).get(0));// for requestID
System.out.println(desc.get(3)+" ::"+vals.get(i).get(3));// for product
System.out.println(desc.get(5)+" ::"+vals.get(i).get(5));//for currency, and so on..
}
Upvotes: 1
Reputation: 2155
Just create class JsonHolder like this:
public class JsonHolder{
int RequestID;
String Product;
String Currency;
String etc...
}
Then create ArrayList of JsonHolder's objects
ArrayList<JsonHolder>data = new ArrayList();
Then just in your circle, where you parse json, after parsing every json array item, create JsonHolder object and add it to ArrayList data. So you will have all your json objects like custom objects and the will be store in ArrayList.
Upvotes: 0