我对Java很新,我试图为我的JSON文件编写Iterator。
但它一直告诉我"不兼容的类型:JSONValue无法转换为JSONObject"在JSONObject authorNode = (JSONObject) authors.next();
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import mende.entity.Author;
public class JSONIteratorAuthor implements Iterator <Author> {
private Iterator<JSONValue> authors;
public JSONIteratorAuthor(JSONObject jsonObject){
this.authors = ((JSONArray) jsonObject.get("authors")).iterator();
}
@Override
public boolean hasNext() {
return this.authors.hasNext();
}
public Author next() {
if(this.hasNext()){
Author a = new Author();
JSONObject authorNode = (JSONObject) authors.next();
a.setFirstName((String) authorNode.get("first_name"));
a.setLastName((String) authorNode.get("last_name"));
return a;
}
else {
return null;
}
}
}
有人可以帮助我吗?
答案 0 :(得分:2)
authors.next();返回JSONValue类型的对象
private Iterator<JSONValue> authors;
但是你试图将它转换为不兼容的类型(JSONObject)
JSONObject authorNode = (JSONObject) authors.next();
我猜你的Iterator<JSONValue>
应该是Iterator<JSONObject>
。