JSONValue无法转换为JSONObject

时间:2016-01-05 18:01:33

标签: java json jsonobject

我对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;
        }
    }    
}

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

authors.next();返回JSONValue类型的对象

private Iterator<JSONValue> authors;

但是你试图将它转换为不兼容的类型(JSONObject)

JSONObject authorNode = (JSONObject) authors.next();

我猜你的Iterator<JSONValue>应该是Iterator<JSONObject>