[英]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.