java - 带有java json的对象数组
问题描述
我一直在尝试使用 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 对象。您可以按照创建导演的方式执行此操作,然后Film.setDirector(director);
您可以调用:您刚刚制作的人员actors[i++]=actor
在哪里。actor
希望这可以帮助
推荐阅读
- sql - 基于非模式特定的列值序列检索未知值
- laravel - Laravel Passport 来自同一端点的响应同时来自两个用户的两个不同的 access_tokens 在两种情况下都返回第一个用户
- twitter-bootstrap - 如何在引导组合框的焦点上选择选项的文本?似乎没有任何事件为 onclick 或 onfocus 触发?
- c++ - 模板专用类之间的构造函数重载
- c# - 如何让结果在几分钟内显示出来?
- javascript - 在方法中调用动作标签
- reporting-services - 显示矩阵中最高 MAX 值的 ID
- laravel - 分离 SEO 友好的 URL
- python - 即使我在上面的行上打印,我的函数也返回 None,我错过了什么?
- excel - 如何从一张表中复制值,其中值从特定行开始