【问题标题】:How do I pull the string array from this json object?如何从这个 json 对象中提取字符串数组?
【发布时间】:2012-02-21 06:52:46
【问题描述】:

我正在尝试使用 org.json 中的类从以下 json 对象中获取可用数字的列表

    {
        "response":true,
        "state":1,
        "data":
        {
            "CALLERID":"81101099",
            "numbers":
                [
                       "21344111","21772917",
                       "28511113","29274472",
                       "29843999","29845591",
                       "30870001","30870089",
                       "30870090","30870091"
                ]
        }
    }

我的第一步是,在从 web 服务接收到 json 对象后:

jsonObj = new JSONObject(response);
jsonData = jsonObj.optJSONObject("data");

现在,如何保存数字字符串数组?

【问题讨论】:

    标签: android json


    【解决方案1】:

    使用:

    jsonObj = new JSONObject(response);
    jsonData = jsonObj.optJSONObject("data");
    JSONArray arrJson = jsonData.getJSONArray("numbers");
    String[] arr = new String[arrJson.length()];
    for(int i = 0; i < arrJson.length(); i++)
        arr[i] = arrJson.getString(i);
    

    【讨论】:

    • 除了 JSONArray 中没有名为 getLength 的方法(您的意思是 length() 吗?)这很棒 - 谢谢 :)
    • 如果您指定字符串,看起来您必须将 arrJson.get(i) 的值转换为字符串。
    • 显示空指针异常。 getString(i) 以字符串的形式检索值。但在 OP 的情况下,JSONArray 的元素没有价值。
    【解决方案2】:

    您需要使用JSONArray 来拉取数组中的数据

    JSONObject jObj= new JSONObject(your_json_response);
    JSONArray array = jObj.getJSONArray("data");
    

    【讨论】:

      【解决方案3】:

      假设您正在尝试在 javascript 块中获取它,请尝试这样的操作

      var arrNumber = jsonData.numbers;

      【讨论】:

        【解决方案4】:

        我的代码用于获取“数据”:

        public void jsonParserArray(String json) {
        
                String [] resultsNumbers = new String[100];
        
                try {
                    JSONObject jsonObjectGetData = new JSONObject(json);
                    JSONObject jsonObjectGetNumbers = jsonObjectGetData.optJSONObject("results");
                    JSONArray jsonArray = jsonObjectGetNumbers.getJSONArray("numbers");
                    for (int i = 0; i < jsonArray.length(); i++) {
                        resultsNumbers[i] = jsonArray.getString(i);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                    Log.e(LOG_TAG, e.toString());
                }
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-06-18
          • 1970-01-01
          • 1970-01-01
          • 2023-03-06
          • 1970-01-01
          • 2012-04-26
          • 1970-01-01
          相关资源
          最近更新 更多