我有一个像这样的json:
"subject": {
"category": [
{
"name": "name1"
},
{
"name": "name2"
},
{
"name": "name3"
},
{
"name": "name4"
}
]
}
所以它是一个包含名称数组的对象。什么可能是一个等效的Pojo呢?
我应该创建一个具有名为category?
的字符串列表的Subject对象我试过了:
public class Subject {
@JsonProperty(value = "category")
private List<String> name;
//getter setter ...
}
但是我得到了嵌套异常:com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token
答案 0 :(得分:2)
理想情况下,每个对象都应该是一个类,每个数组都应该是Java中的集合。 它应该是:
public class Subject {
private List<Category> category;
//getters and setters
}
class Category{
String name;
//getters and setters
}
答案 1 :(得分:0)
是的,你是对的..你可以像你提到的那样实施POJO
class Subject{
List<String> categories;
// getters and setters
}
答案 2 :(得分:0)
你为什么不用Gson?它非常坚固且经过良好测试。
Subject subject = new Gson().fromJson(jsonObject.toString(), Subject.class);
如果Gson不是这里的选项,你也可以试试这个
public class Subject{
private List<Category> category;
//setter/getter(s)
private static class Category{
String name;
}
}
答案 3 :(得分:0)
在这个json文件中,你有Subject对象包含一个对象数组&#34; category&#34;如果您需要来自该Subject对象的值,您应该像这样提取 的console.log(Subject.category [0]。名称);
答案 4 :(得分:0)
除dev8080 answer之外,我建议您使用jsonschema2pojo服务。
如果您粘贴源JSON并选择Source type:JSON,您将获得以下输出:
---------------com.example.Subject.java---------------
package com.example;
import java.util.ArrayList;
import java.util.List;
import javax.validation.Valid;
public class Subject {
@Valid
private List<Category> category = new ArrayList<Category>();
public List<Category> getCategory() {
return category;
}
public void setCategory(List<Category> category) {
this.category = category;
}
}
---------------com.example.Category.java---------------
package com.example;
public class Category {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
您可以使用选项轻松调整它或手动采用某些部分。