java - java json 对象数组

标签 java arrays json gson

我一直在尝试使用 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 />
--------------------------------------
--------------------------------------

最佳答案

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

关于java - java json 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59185635/

相关文章:

java - 如何使用 gson 从 json 创建 java 列表?获取 NullPointerException

javascript - 用 Angular 显示json结果

java - Spring java.lang.ClassNotFoundException : org. springframework.context.ApplicationContext

java - 如何从java源文件中提取TODOS

java - 如何将数组列表放入另一个类的数组中?

arrays - 从配置单元中的非嵌套数据创建嵌套数据

c# - 在两个数组中查找唯一字符串 C#

arrays - 如何制作基于 1 索引的数组

java - 将数组传递给 Java 方法

java - 将 jsonobject 存储在 ArrayList 中