【问题标题】:Build JSON Array from JSON Objects从 JSON 对象构建 JSON 数组
【发布时间】:2017-02-23 11:58:37
【问题描述】:

我正在运行一个循环,我将 JSON 对象作为输入,如何将所有这些 JSONObject 附加到 JSONArray 中? 输入是一个 JSONObject,它包含一个基于字符串的键值对,称为“名称”,我要提取它。

以下是我尝试过的,我无法使用以下代码将它们全部附加在一起,而是一次出现一个。

        List<String> hoi2 = new ArrayList();

        if(input != null) {
            hoi2.add(input.getString("name"));
        }

        System.out.println(hoi2);

示例输入格式(一次获取一个输入):

{"lon":77.5858225,"name":"bingo","lat":12.9171587}
{"lon":77.5858225,"name":"dingo","lat":12.9171587}
{"lon":77.5858225,"name":"lingo","lat":12.9171587}

要求的结果:

["bingo","dingo","lingo"]

我目前的结果:

["bingo"]
["dingo"]
["lingo"]

更新: 我意识到我的方法是错误的问题,因为我的数组在每次输入后都会变为空白并重写它因此必须定义一个全局变量。

【问题讨论】:

  • 你用的是什么库?
  • 请在循环中添加代码,您是在循环中编写完整的给定代码吗?

标签: java arrays json object


【解决方案1】:

以下代码:

List<Integer> hoi2 = new ArrayList<Integer>();
        for(int i=0; i<3; i++){
            hoi2.add(i);
        }
        System.out.println(hoi2);  

输出将是:

[0, 1, 2]

以下代码:

for(int i=0; i<3; i++){
            List<Integer> hoi2 = new ArrayList();
            hoi2.add(i);
            System.out.println(hoi2);
        }

输出将是:

[0]
[1]
[2]

【讨论】:

    【解决方案2】:
    JSONArray jArray = new JSONArray();
    
            for (int i = 0; i < docList.size(); i++) {
                JSONObject json = new JSONObject(hoi2.get(i));
                jArray.put(json);
            }
    

    【讨论】:

    • 我一次只得到一个输入
    • for (int i = 0; i
    【解决方案3】:

    这里可能会发布完整的解决方案,请参考。

    代码:

    List<String> hoi2 = new ArrayList();
    hoi2.add("{\"lon\":77.5858225,\"name\":\"bingo\",\"lat\":12.9171587}");
    hoi2.add("{\"lon\":77.5858225,\"name\":\"dingo\",\"lat\":12.9171587}");
    hoi2.add("{\"lon\":77.5858225,\"name\":\"lingo\",\"lat\":12.9171587}");
    
    JSONArray jsonArray = new JSONArray();
    
    try {
        for (int i = 0; i < hoi2.size(); i++) {
            JSONObject jsonObject = new JSONObject(hoi2.get(i));
            System.out.print(jsonObject.getString("name"));
            jsonArray.put(jsonObject.getString("name"));
        }
    } catch (Exception e) {
            e.printStackTrace();
    }
    
    System.out.print(jsonArray.toString());
    

    输出:

    ["bingo","dingo","lingo"]
    

    【讨论】:

    • 我在一个数组中有字符串,因此“JSONObject jsonObject = new JSONObject(hoi2.get(i));”给出一个错误
    • 如果可能的话,请在评论框中添加错误。 @InheritedGeek
    • json jar 添加到您的项目中?
    • org.json.JSONException: JSONObject 文本必须以 '{' 在 1 [字符 2 第 1 行] 开始
    • 您使用哪个 IDE?因为这段代码在android studio中执行,android默认提供JSON设施,所以可能不会在这个解决方案中添加导入语句。
    猜你喜欢
    • 2018-03-02
    • 2020-06-08
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2012-12-14
    • 1970-01-01
    相关资源
    最近更新 更多