繁体   English   中英

将JSONArray转换为arrayList

[英]Convert JSONArray to arrayList

我正在尝试转换一个看起来像这样的JSONArray

{"output":["name":"Name3","URI":"Value3"},{"name":"Name5","URI":"Value5"},{"name":"Name4","URI":"Value4"}]}

放入arrayLis t中,例如, Arr[0][0]的输出将为Name3

我已经尝试过此解决方案:

if (outputs!= null) { 
    int len = outputs.length();
    for (int j=0;j<len;j++){ 
        list.add(outputs.get(j).toString());
    } 
} 
for (String str : list) {               
    System.out.println("Item is: " + str);              
}

但是我得到了完整的行: {"name":"Name3","URI":"Value3"}

如何获取JSONArray每个对象?

它没有指定,您使用哪个JSON解析器,所以我想您可以立即选择,我建议这样使用Gson

反序列化此类结构的更好解决方案是为每个结构创建一个特殊的类,例如:

public class NameURIPair {
    private String name;
    private String URI;

    // getters
}

然后,您的JSON可以反序列化为一个类,该类中包含结果List

public class Data {
    private List<NameURIPair> output;

    // getter
}

// ...

Data data = new Gson(stringData, Data.class);

由于已经请求了其他方法,因此仍然可以使用JsonParser将解析后的JSON放入JsonElement

JsonElement root = new JsonParser().parse(stringData);

尽管我不会为您提供完整的解决方案,但不要欣赏这种解决方案:-)

Aazelix,您的Json输出似乎缺少打开数组括号。 其正确格式如下:

{"output":[{"name":"Name3","URI":"Value3"},{"name":"Name5","URI":"Value5"},{"name":"Name4","URI":"Value4"}]}

至于转换为POJO

List<MyObj> list = new ArrayList<>();
if (outputs!= null) { 
  int len = outputs.length();
  for (int i=0; i<len; i++) { 
    JSONObject o = (JSONObject) outputs.get(i);
    list.add(new MyObj(o.getString('name'), o.getString('URL')));
  } 
} 
System.out.println("There is " + list.size() + " objects.");


public static final class MyObj {
  final String name;
  final String url;

  public MyObj(String name, String url) {
     this.name = name;
     this.url  = url;
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM