【问题标题】:How to fetch values from multiple Json Arrays like below in Android?如何在 Android 中从多个 Json 数组中获取值,如下所示?
【发布时间】:2018-10-30 07:07:37
【问题描述】:
{  
   "EMERSON PARTS PTE LTD":[  
      "7832.4000000000000"
   ],
   "DATASELL CO LTD":[  
      "6099.0000000000000"
   ],
   "CATERMAS AUTO PARTS PTE LTD":[  
      "4633.1000000000000"
   ],
   "CONNOR TRADING LTD":[  
      "2166.7500000000000",
      "1402.7700000000000"
   ],
   "Telemart Paper (M) Sdn.Bhd.":[  
      "954.4400000000000",
      "19088.8000000000000"
   ],
   "ASTRO ASIAN PTE LTD":[  
      "22598.4000000000000"
   ],
   "ABC Pte Ltd":[  
      "535.0000000000000",
      "535.0000000000000"
   ],
   "AMERICAN COMPUTER SUPPLY CO PTE LTD":[  
      "321.0000000000000"
   ],
   "Willian Engineering Pte Ltd":[  
      "1408.6300000000000",
      "1970.7700000000000",
      "414.3000000000000",
      "548.9500000000000"
   ]
}

我需要从上面的 Json 数组中获取值。 Json 数组的名称例如:Willian Engineering Pte Ltd,都是包含在 arraylist 中的动态值。我的意思是说 Json 数组的名称存储在一个数组列表中。

谁能告诉我如何获取整个值?

谢谢

【问题讨论】:

  • “获取”是什么意思?什么是预期的输出?是否要将所有值集中到一个数组中?
  • 我需要获取每个数组下的值。例如在 DATASELL CO LTD 下,我需要“6099.0000000000000”值。
  • 也许你可以展示一些你目前拥有的代码
  • 看看我的回答。可能对你有帮助。
  • 遍历根 JSONObject 键,并获取它们的值 - 这将是带有数字的 JSONArrays

标签: java android arrays json


【解决方案1】:

您可以使用 JSONObject 中的所有键进行遍历。喜欢,

JSONObject obj = new JSONObject(string);
    List<String> allKeyList = new ArrayList<String>();
    Iterator<String> keys = obj.keys();
    while (keys.hasNext()) {
        allKeyList.add(keys.next());
    }

那么你就可以从这个allKeyList得到所有的JSONArray了。

【讨论】:

    【解决方案2】:

    你可以这样做:

        String originStr="{\"EMERSON PARTS PTE LTD\":[\"7832.4000000000000\"],\"DATASELL CO LTD\":[\"6099.0000000000000\"],\"CATERMAS AUTO PARTS PTE LTD\":[\"4633.1000000000000\"],\"CONNOR TRADING LTD\":[\"2166.7500000000000\",\"1402.7700000000000\"],\"Telemart Paper (M) Sdn.Bhd.\":[\"954.4400000000000\",\"19088.8000000000000\"],\"ASTRO ASIAN PTE LTD\":[\"22598.4000000000000\"],\"ABC Pte Ltd\":[\"535.0000000000000\",\"535.0000000000000\"],\"AMERICAN COMPUTER SUPPLY CO PTE LTD\":[\"321.0000000000000\"],\"Willian Engineering Pte Ltd\":[\"1408.6300000000000\",\"1970.7700000000000\",\"414.3000000000000\",\"548.9500000000000\"]}";
        String searchStr; //for example: "Willian Engineering Pte Ltd"
        JSONObject originJsonObj;
        JSONArray resultJsonArray;
        String resultStr;
    
    
        try {
              originJsonObj = new JSONObject(originStr);
              resultJsonArray = originJsonObj.getJSONArray(searchStr);
              resultStr = resultJsonArray.toString();
        } catch (JSONException e) {
              e.printStackTrace();
        }
    

    【讨论】:

    • 抱歉,不允许搜索。我已经提到 Json 的名称来自一个数组列表。
    • @GargiBose 您可以将我的代码提取到一个函数并循环数组列表。
    • 好的,但是你能告诉我如何总结这些值吗?我的意思是对于包含多个键的值?
    【解决方案3】:

    这似乎是一个非常笼统的问题,但这里有一个大的object,它有members。每个member 是一个array。因此,您可能应该遍历对象的members,然后为每个member array 遍历它。 https://www.json.org/

    编辑:这可能是一个很好的起点https://stackoverflow.com/a/13573965/568735

    编辑:我想成员应该转换为JSONArrays。

    【讨论】:

    • “可能”、“可能”、“我猜”?并且引用另一个答案应该是评论,而不是答案
    • 他有一个对象,而不仅仅是“数组”的解释不合格? (在这种情况下,正确的程序是什么,我应该删除我的答案并将其作为评论吗?)
    • 如果您认为这是另一个问题的重复项,您应该投票关闭它并参考重复项。否则删除此答案并添加评论
    • 但是......如果 OP 根本没有意识到他有一个大对象在混合?据我所知,这是他/她失踪的关键点......(这就是为什么我把它写成一个答案,引用 json 规范)引用另一个答案是一种“开始”链接。
    • 也许我们需要 OP 来澄清他/她意识到什么,什么没有?
    【解决方案4】:
    public static void main(String[] args) {
    
            String json="{\"EMERSON PARTS PTE LTD\":[\"7832.4000000000000\"],\"DATASELL CO LTD\":[\"6099.0000000000000\"],\"CATERMAS AUTO PARTS PTE LTD\":[\"4633.1000000000000\"],\"CONNOR TRADING LTD\":[\"2166.7500000000000\",\"1402.7700000000000\"],\"Telemart Paper (M) Sdn.Bhd.\":[\"954.4400000000000\",\"19088.8000000000000\"],\"ASTRO ASIAN PTE LTD\":[\"22598.4000000000000\"],\"ABC Pte Ltd\":[\"535.0000000000000\",\"535.0000000000000\"],\"AMERICAN COMPUTER SUPPLY CO PTE LTD\":[\"321.0000000000000\"],\"Willian Engineering Pte Ltd\":[\"1408.6300000000000\",\"1970.7700000000000\",\"414.3000000000000\",\"548.9500000000000\"]}";        
            JSONObject jsonObject = new JSONObject(json);           
            Set<String> keys =jsonObject.keySet();
            for(String key:keys) {
                System.out.println("Key :: "+key +", Value :: "+jsonObject.get(key));;
            }
        }
    

    使用来自org.json 包的JSONObject

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多