我有跟随json。
{
foo:{
id:1
},
name:'Albert',
age: 32
}
如何反序列化为Java Pojo
public class User {
private int fooId;
private String name;
private int age;
}
答案 0 :(得分:0)
您可以执行以下操作之一:
创建代表Foo
的具体类型:
public class Foo {
private int id;
...
}
然后在User
你会得到:
public class User {
private Foo foo;
...
}
使用Map<String, Integer>
:
public class User {
private Map<String, Integer> foo;
...
}
如果其他来电者真的希望您拥有getFooId
和setFooId
,您仍然可以提供这些方法,然后根据Foo
或Map
进行委托在你选择的选项上。只需确保使用@JsonIgnore
对它们进行注释,因为它们不是真正的属性。
答案 1 :(得分:0)
这是您在构造函数中使用JsonProperty
注释进行反序列化所需的内容。
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class User {
private int fooId;
private String name;
private int age;
public int getFooId() {
return fooId;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public User(@JsonProperty("age") Integer age, @JsonProperty("name") String name,
@JsonProperty("foo") JsonNode foo) {
this.age = age;
this.name = name;
this.fooId = foo.path("id").asInt();
}
public static void main(String[] args) {
ObjectMapper objectMapper = new ObjectMapper();
String json = "{\"foo\":{\"id\":1}, \"name\":\"Albert\", \"age\": 32}" ;
try {
User user = objectMapper.readValue(json, User.class);
System.out.print("User fooId: " + user.getFooId());
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出:
User fooId: 1
希望它有所帮助,
何塞路易斯答案 2 :(得分:-1)
您可以使用非常有用的gson Google API。
首先,创建这两个类:
用户类:
public class User{
Foo foo;
String name;
int age;
//getters and setters
}
Foo class:
public class Foo{
int id;
//getters and setters
}
如果您有example.json
文件,请按照以下步骤反序列化
Gson gson = new Gson();
User data = gson.fromJson(new BufferedReader(new FileReader(
"example.json")), new TypeToken<User>() {
}.getType());
如果你有一个exampleJson
字符串,那么按照以下反序列化
Gson gson = new Gson();
User data = gson.fromJson(exampleJson, User.class);