Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将JSONArray转换为arrayList_Java_Arrays_Json_Arraylist - Fatal编程技术网

Java 将JSONArray转换为arrayList

Java 将JSONArray转换为arrayList,java,arrays,json,arraylist,Java,Arrays,Json,Arraylist,我正在尝试转换一个如下所示的JSONArray: {"output":["name":"Name3","URI":"Value3"},{"name":"Name5","URI":"Value5"},{"name":"Name4","URI":"Value4"}]} 例如,Arr[0][0]的输出将是Name3 我尝试过这个解决方案: if (outputs!= null) { int len = outputs.length(); for (int j=0;j<len;

我正在尝试转换一个如下所示的
JSONArray

{"output":["name":"Name3","URI":"Value3"},{"name":"Name5","URI":"Value5"},{"name":"Name4","URI":"Value4"}]}
例如,
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);              
}
如果(输出!=null){
int len=outputs.length();

对于(intj=0;jAazelix),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;
  }
}
List List=new ArrayList();
如果(输出!=null){
int len=outputs.length();

对于(int i=0;i,没有指定它,您使用哪个JSON解析器,所以我想您现在可以选择,我建议您使用
Gson

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

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

    // getters
}
然后,您的JSON可以反序列化为一个类,其中包含生成的
列表

public class Data {
    private List<NameURIPair> output;

    // getter
}

// ...

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

虽然我不会给你完整的解决方案,但我不欣赏这种解决方案:-)

迭代内部JSON。@maxZoom我看到了这一点,它并没有解决我的问题,但无论如何感谢您指出这一点。我可以这样做,但我想将完整数组作为参数发送
o.name
o.URL
。真的吗?第二点:OP had
URI
,而不是
URL
,我没有编译或运行代码,因此它可能会出现问题需要一些改进。
JsonElement root = new JsonParser().parse(stringData);