【问题标题】:Read JSON double dimensional array in Java在 Java 中读取 JSON 双维数组
【发布时间】:2015-06-23 14:01:50
【问题描述】:

我正在尝试从 JSONObject 获取字符串。

我的 JSON 看起来像这样:

{
    "agent":
    [
        {"name":"stringName1", "value":"stringValue1"},
        {"name":"stringName2", "value":"stringValue2"}
    ]
}

我想从 stringName1 和 stringName2 中获取值。所以首先,我尝试使用这个来获取“代理”:

JSONObject agent = (JSONObject) jsonObject.get("agent");

但是,这会引发错误。

您对如何处理有任何想法吗?

【问题讨论】:

  • “代理”是 JSONArray。 jsonObject.optJSONArray("agent");

标签: java android arrays json


【解决方案1】:

您正在尝试将 JSON 数组解析为 JSON 对象。当然它会给你带来错误。

试试这个:

JSONArray agent = jsonObject.getJsonArray("agent");

// To get the actual values, you can do this:
for(int i = 0; i < agent.size(); i++) {
    JSONObject object = agent.get(i);
    String value1 = object.get("name");
    String value2 = object.get("value");
}

【讨论】:

  • 要获取数组中的元素,请使用get(int) 方法。喜欢:agent.get(0);.
  • 感谢您的帮助!我不得不更改一些代码,但它有效!我将agent.size() 更改为agent.length(),将object.get("name") 更改为object.getString("name")
【解决方案2】:
 String Json=" { agent: [ {name:stringName1, value:stringValue1},{name:stringName2, value:stringValue2}]}";

您正在将 Jsonarray 解析为 JsonObject,这就是您收到错误的原因。

JSONObject obj = new JSONObject(Json);
JSONArray array = obj.getJSONArray("agent");

 for(int i = 0 ; i < array.length() ; i++)
       {
   String strngNameOne=array.getJSONObject(i).getString("name");
   String stringNameTwo=array.getJSONObject(i).getString("value");
   //System.out.println(array.getJSONObject(i));
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-11
    • 2016-02-02
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    相关资源
    最近更新 更多