【问题标题】:Get Key and values from JSONObject从 JSONObject 获取键和值
【发布时间】:2017-03-09 05:41:46
【问题描述】:

我正在尝试从我的 JSONObject 中提取键和值。但我无法做到这一点。这是 JSON:

[{"id":["5"]},{"Tech":["Java"]}]

它最初是一个字符串。我已使用以下方法将其转换为 JSONObject:

JSONObject jsonObj = new JSONObject("[{"id":["5"]},{"Tech":["Java"]}]");

然后我尝试通过以下方式获取键和值:

jsonObj.getString("id");

但它给了我null。有谁能帮帮我吗?

【问题讨论】:

  • 您的数据是 JSON 数组,而不是 JSON 对象。
  • 是的,它是一个JSON数组,需要执行数组/字符串操作才能得到id

标签: java json


【解决方案1】:

试试这个:

try {
    JSONArray jsonArr = new JSONArray("[{\"id\":[\"5\"]},{\"Tech\":[\"Java\"]}]");

    for (int i = 0; i < jsonArr.length(); i++) {
        JSONObject jsonObj = jsonArr.getJSONObject(i);
        String k = jsonObj.keys().next();
        Log.i("Info", "Key: " + k + ", value: " + jsonObj.getString(k));
    }

} catch (JSONException ex) {
    ex.printStackTrace();
}

【讨论】:

  • 这里显示的JSON数据和OP提供的不一样,是[{"id":["5"]},{"Tech":["Java"]}],注意中间的},{
  • @JasonC 是的,我注意到了,所以我为他声明
  • OP 正在询问如何解析给定的 JSON 数据。建议他们使用不同的 JSON 数据似乎没有用。
【解决方案2】:

您发送的参数是 JsonArray 并引用 JsonObject。正确的做法是

JSONObject jsonObj = new JSONObject("{'id':['5','6']},{'Tech':['Java']}");      
    System.out.println(jsonObj.getString("id"));

    JSONArray jsonArray = new JSONArray("[{'id':['5','6','7','8']},{'Tech':['Java']}]");
    System.out.println(jsonArray.length());
    for(int i=0;i<jsonArray.length();i++){
            System.out.println(jsonArray.getJSONObject(i).getString("id"));
    }

【讨论】:

    【解决方案3】:

    因为id你没有字符串,你有一个字符串数组,

    很想这样做 jsonObj.getString("id");

    这样做

    jsonObj.getArray("id"); 这会给你这个数组作为回报

    如果你在id 有一个 Json 数组,那么你必须这样做

    jsonObj.getJSONArray("id");

    【讨论】:

    • 是的,记得在try and catch中添加这段代码,因为它会抛出未经检查的异常
    • 首先,我所知道的没有JSONObject 实现定义了一个名为getArray 的方法,其次getJSONArray("id") 不适用于给定的JSON 数据,它适用于{"id":["5"],"Tech":["Java"]},这是不是给的。
    • 嗨维平。非常感谢您的回复。但它没有成功:(。正如@JasonC所说,当我尝试并且getJSONArray(“id”)不起作用时没有方法getArray。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 2013-02-19
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多