Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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迭代json中的字符串列表_Java_Json_Loops - Fatal编程技术网

如何使用java迭代json中的字符串列表

如何使用java迭代json中的字符串列表,java,json,loops,Java,Json,Loops,我必须遍历映射器列表,映射器是字符串列表,我的json如下所示: { “aa”:{ “val”:“, “agl”: [ { “a”:“A1”, “b”:“B1”, “c”:“C1” }, { “a”:“A2”, “b”:“B2”, “c”:“C2” } ] } } 结果是使用迭代器模式获得a、b和c值。 我在下面的代码中尝试了这一点,但出现了相同的错误JSONArray[0]不是JSONObject List<Mapper> agl= fileDescription.get(&quo

我必须遍历映射器列表,映射器是字符串列表,我的json如下所示:

{ “aa”:{ “val”:“, “agl”: [ { “a”:“A1”, “b”:“B1”, “c”:“C1” }, { “a”:“A2”, “b”:“B2”, “c”:“C2” } ] } }

结果是使用迭代器模式获得a、b和c值。 我在下面的代码中尝试了这一点,但出现了相同的错误JSONArray[0]不是JSONObject

List<Mapper> agl= fileDescription.get("aa").getAgl();
      JSONArray jsonArray = new JSONArray(agl);

      System.out.println(jsonArray);
      for (int i = 0; i < jsonArray.length(); i++) {

        Object jsonObj = jsonArray.getJSONObject(i);
       
        System.out.println(jsonObj);

       }
Mapper.java

public class Mapper{

@JsonProperty("a")
private String a;

@JsonProperty("b")
private  String b;

@JsonProperty("c")
private String c;

public String getA() {
return a;
}

public void setA(String a) {
  this.a= a;
}

public String getB() {
  return b;
}

public void setB(String b) {
this.b= b;
}

public String getC() {
return c;
}

public void setC(String c) {
this.c= c;
}


@Override
public String toString() {

return "{\"a\":" + "\""+a+ "\"" + ", \"b\":" + "\"" + b + "\"" + ", \"c\":" + "\"" + c + "\"" + "}";
 }
 }

我认为你误用了打字系统。您已经有一个要迭代的有效列表。不要再创建一个

List<Mapper> agl= fileDescription.get("aa").getAgl();
Iterator<Mapper> iterator = agl.iterator();
while (iterator.hasNext()) {
    Mapper m = iterator.next();
    System.out.println(m.getA());
} 
List agl=fileDescription.get(“aa”).getAgl();
迭代器迭代器=agl.Iterator();
while(iterator.hasNext()){
映射器m=iterator.next();
System.out.println(m.getA());
} 
或者干脆

List<Mapper> agl= fileDescription.get("aa").getAgl();
for (Mapper m : agl) {
    System.out.println(m.getA());
}
List agl=fileDescription.get(“aa”).getAgl();
用于(映射器m:agl){
System.out.println(m.getA());
}

或者
agl.forEach(m->System.out.println(m.getA())

您确定得到了正确的列表吗?
agl
jsonArray
包含什么?你能展示一个包含json解析的数组吗?jsonArray包含:[“{a\\”:“A1\”,“b\”:“B1\”,“c\”:“C1\”,“{a\”:“A2\”,“b\”:“B2\”,“c\”:“C2\”}]好的,这是一个包含单个元素的列表,一个字符串,而不是一个对象,所以请再次显示完整代码的一部分,包括映射器类,它不是单个元素,在我的json示例中有两个元素。不过,我用MapperIt的代码更新了这篇文章,它不应该是字符串列表。它应该是一个对象列表。。。例如,这将很好地工作,您不需要为(Mapper m:agl){System.out.println(m.getA();}
List<Mapper> agl= fileDescription.get("aa").getAgl();
for (Mapper m : agl) {
    System.out.println(m.getA());
}