【问题标题】:Converting JSONArray String to array将 JSONArray 字符串转换为数组
【发布时间】:2013-05-08 19:19:47
【问题描述】:

我有这个 JSON 数据

{"mydata":{"numbers":[12,23,34]}}

通过 JSONObject 我得到以下对象:

JSONObject obj = mydataObj.getJSONObject("mydata");

所以 obj 是这样的:

{"numbers":[12,23,34]}

我需要使用数字元素。所以我会做一个for循环来使用元素。

String numbers = myObject.getString("numbers");

这给出了一个这样的字符串:

["12","23","34"]

如何将其转换为数组或数组列表?
所以我将有一个值为 12、23 和 34 的数组。

编辑:得到JSONArray的Array、ArrayList后,我会比较“numbers1_Array”和“numbers2_Array”。然后我会找到存在于第一个数组中但不存在于第二个数组中的元素。所以选择比较操作相关的数据结构类型比较容易。

【问题讨论】:

    标签: java json string


    【解决方案1】:

    您可以尝试getJSONArray() 而不是getString(),然后简单地迭代JSONArray 并构建您的ArrayList

    【讨论】:

    • 是否可以与 JSONArrays 进行比较并找出它们之间的差异?
    • 我没试过。如果你只是想知道它们是否相同,你可能会比较它们的字符串表示,否则你可能需要迭代。
    【解决方案2】:

    试试这个

       JSONArray jArray = jObj.getJSONArray("numbers");
       List list<Long> = new ArrayList<Long>(); 
    
        for(int i=0; i < jArray .length(); i++)
            list.add(new Long((String)jArray .get(i)));
    

    【讨论】:

    • 什么是第二个数组。你有一个吗?
    • 为简洁起见,我将其删除。 Seconds 数组的结构与第一个相同。只有值不同。
    【解决方案3】:

    在JSONObject中获取对象后 你所拥有的是

    JSONObject obj ===>>> {"numbers":[12,23,34]}
    

    现在这个对象是一个数组 所以你不能只通过传递名称来访问数组 你必须做这样的事情

    JSONArray numbers = (JSONArray) jsonObject.get("numbers");
            Iterator<Integer> iterator = numbers.iterator();
            while (iterator.hasNext()) {
                System.out.println(iterator.next());
                        // this iterator.next() is your element from the JSON array
                        //you can store like 
                        // int val = iterator.next()
                        // better you store this in an array 
            }
    

    【讨论】:

      【解决方案4】:

      其他解决方案都很好,你也可以像这样使用你的字符串

      numbers=numbers.substring(1,s.length()-1).replaceAll("\"","");
      List<String> sample = new ArrayList<String>();
      sample.addAll(Arrays.asList(s.split(",")));
      

      【讨论】:

        【解决方案5】:

        您可以使用 Guava 以这种方式进行操作。 https://github.com/google/guava

            String numbers = myObject.getString("numbers");
            List list = new ArrayList();
            JSONArray numbersJsonArray = new JSONArray(numbers);
            for (int i = 0; i < numbersJsonArray.length(); i ++) {
                list.add(numbersJsonArray.getInt(i));
            }// after this loop if what you need is the array list you have it all in the list
        
        
            int[] array = Ints.toArray(list); // if you need array of ints
        

        【讨论】:

          猜你喜欢
          • 2013-03-30
          • 1970-01-01
          • 2014-03-09
          • 2015-02-16
          • 1970-01-01
          • 2023-03-21
          • 2011-09-21
          • 2012-04-28
          • 2017-03-14
          相关资源
          最近更新 更多