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

标签 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

期望输出:::

RequestID :: 381
Product :: Test 1
Currency :: IND
TransactionResponseDescription :: Successful

RequestID :: 380
Product :: Test 2
Currency :: IND
TransactionResponseDescription :: Successful

编辑::

我存储数据的问题是我没有获得请求 ID 或产品的整个数组。 在第一个数组中,我得到了所有标题(标签),在其余数组中,我得到了值。

所以,我知道在第 0 个th 索引处我总是得到 RequestID,依此类推。那么,如何存储这个值才能达到想要的输出呢?

最佳答案

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..
     }

关于java - 如何将 JSON 数组存储在 JSON 数组结果中并显示在 ListView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18019093/

相关文章:

java - 修改哈希表中的值

java - org.eclipse.persistence.exceptions.ValidationException : Cannot add a query whose types conflict with an existing query

java - 确认安装了 Java 11 后,Ubuntu Java 应用程序找不到命令 javac

php - 来自 Web 服务器的响应主体的值为 "<body>&lt;script language="javaScript">window.parent.document.cookie ="Authorization=;path=/";

java - 谷歌云消息接收者 Intent 不启动(广播 Intent 回调: result=CANCELLED forIntent)

jquery - 访问带有哈希 (#) 前缀的 JSON 变量

java - 创建和发送自定义事件

android - 如何不停地更换背景图片?

json:无法将数组解码为 main.Posts 类型的 Go 值

java - 如何从android中的Map中获取键值对