我有像这样的JSON响应::
{
"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"
]
]
}
我使用以下机制::
成功解析了这个JSON 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);
}
}
}
日志响应:::
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
编辑::
我存储数据的问题是我没有得到整个Request ID或Product数组。 在第一个数组中,我得到了所有的标题(标签),在其余的数组中,我得到了值。
所以,我知道在0 th 索引我总是得到RequestID,依此类推。那么,如何存储该值以实现所需的输出?
答案 0 :(得分:1)
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..
}
答案 1 :(得分:0)
只需创建类JsonHolder:
public class JsonHolder{
int RequestID;
String Product;
String Currency;
String etc...
}
然后创建JsonHolder对象的ArrayList
ArrayList<JsonHolder>data = new ArrayList();
然后在解析每个json数组项的解析json的圆圈中,创建JsonHolder对象并将其添加到ArrayList数据。因此,您将拥有所有json对象,如自定义对象,并将存储在ArrayList中。