【发布时间】:2020-03-25 08:45:29
【问题描述】:
我正在尝试借助 ObjectMapper 读取 json 文件 (schools.json)。 json的文件结构是这样的:
[
{
"schoolid": "X",
"schoolname": "ABC",
"schoolbranch": "DEF",
},
{
"schoolid": "Y",
"schoolname": "GDF",
"schoolbranch": "HJG",
},
]
这个 json 文件是从 java 中读取的,如下所示:
static final String fileName = "schools.json";
InputStream iStream = getClass().getClassLoader().getResourceAsStream(fileName);
schools = objectMapper.readValue(iStream,
objectMapper.getTypeFactory().constructCollectionType(List.class, School.class));
现在我像这样更新了 json:
[
{
"schoolid": "X",
"schoolname": [{"original": "dfs"},{"translated": "sfds"}],
"schoolbranch": [{"sub": "fdsf5"},{"major": "908fds"}],
},
{
"schoolid": "Y",
"schoolname": [{"original": "wera"},{"translated": "sfds"}],
"schoolbranch": [{"sub": "mohk"},{"major": "908fds"}],
},
]
因此 School.java 也被更改。在以前的版本中,每个字段都是一个字符串字段。现在 schoolname 和 schoolbranch 是其他具有原始、翻译等字段的模型/对象。
public class School {
private int schoolid;
private SchoolName schoolname;
private SchoolBranch schoolbranch;
...
// getters and setters here
}
例如 SchoolName.java:
public class SchoolName {
private String original;
private String translated;
// etc.
}
现在,上面的 java 代码块不工作了。 schools 对象返回 null。
我无法完成这项工作。我发现了一些 json 字段包含数组的示例,但我无法为我的案例应用类似的逻辑。感谢您的帮助。
【问题讨论】:
-
schoolname和schoolbranch应该是数组而不是对象。 -
在java模型中将
schoolname和schoolbranch改成List/Array,或者把你的json改成"schoolname": {"original": "dfs","translated": "sfds"},
标签: java json jackson objectmapper