如何将JSON数组存储在JSON数组结果中并显示在listview中?

时间:2013-08-02 14:13:56

标签: java android json storage

我有像这样的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,依此类推。那么,如何存储该值以实现所需的输出?

2 个答案:

答案 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中。