gson 使用java json的对象数组

3zwtqj6y  于 2022-11-06  发布在  Java
关注(0)|答案(1)|浏览(195)

我一直在尝试用java读取对象json的数组。
下面是我json文件:

{
    "title": "The Social network",
    "summary": "On a fall night in 2003,Havard undergrad and \n programming genius Mark Zuckerberg sits down at his \n computer and heatedly begins working on a new idea.(...)",
    "year": 2010,
    "director": {
        "last_name": "fincher",
        "first_name": "David"
    },
    "actors": [{
            "first_name": "Jesse",
            "last_name": "Eisenberg"
        },
        {
            "first_name": "Roney",
            "last_name": "Mara"
        }
    ]
}

我上了两堂课

public class film {
private String title;
private String summary;
private int year;
private personne director;
private personne[] actors;

和personne类,都使用getter和setter以及简单的tostring方法
这是我的主要内容

public class FilmJsonReader {

    public static final String JSON_FILE="C:\\Users\\hp\\Desktop\\JSON project\\FILM.txt";

    public static void main(String[] args) throws IOException {

        InputStream fis = new FileInputStream(JSON_FILE);

        //create JsonReader object
        JsonReader jsonReader = Json.createReader(fis);

        //get JsonObject from JsonReader
        JsonObject jsonObject = jsonReader.readObject();

        //we can close IO resource and JsonReader now
        jsonReader.close();
        fis.close();

        //Retrieve data from JsonObject and create Employee bean
        film Film = new film();

        Film.setTitle(jsonObject.getString("title"));
        Film.setSummary(jsonObject.getString("summary"));
        Film.setYear(jsonObject.getInt("year"));

        //reading inner object from json object
                JsonObject innerJsonObject = jsonObject.getJsonObject("address");
                personne director = new personne();
                director.setFirst_name(innerJsonObject.getString("first_name"));
                director.setLast_name(innerJsonObject.getString("last_name"));
                Film.setDirector(director);

                //reading arrays from json
        JsonArray jsonArray = jsonObject.getJsonArray("actors");
        personne[] actors = new personne[jsonArray.size()];
        personne p = new personne();
        int i = 0;
        for(JsonValue value : jsonArray){
            actors[i++]=p.toString(value.toString());
        }
        Film.setActors(actors);

        //print employee bean information
        System.out.println(Film);

    }

}

但输出如下:阅读数组中的对象时遇到问题

--------------------------------------
--------------------------------------
title=The Social network<br />
summary=On a fall night in 2003,Havard undergrad and (...)<br />
year=2010<br />
director=fincher, David<br />

**actors= null null**<br />

--------------------------------------
--------------------------------------
laik7k3q

laik7k3q1#

for循环中,需要为JSON数组中的每个参与者创建一个新的personne对象,其方法与创建导演的方法完全相同,然后调用以下命令而不是Film.setDirector(director);actors[i++]=actor其中actor是您刚刚创建的人物。希望这对您有所帮助

相关问题