如何使用 Java 反序列化它?
How can I deserialize it using Java?
我有一个 postgresql 函数 returns json:
{
"query_name": "information1",
"query_type": "information2",
"details": [
{
"name": "Test01",
"age": "35",
"isUpdate": false
}
]
}
如何使用 Java 反序列化它?
我的POJO
@Getter
@Setter
class Information {
String name;
String type;
List<User> details;
}
@Getter
@Setter
class User {
String name;
Integer age;
Boolean isUpdate;
}
我想使用 ObjectMapper 但我做不到)
你可以这样做...
class Information {
String queryName
String queryType
List<User> details
}
对你有用吗?给我留言
创建该结构的 class 并使用 ObjectMapper.readValue() 方法对其进行反序列化。
这可以帮助:https://www.baeldung.com/jackson-object-mapper-tutorial#2-json-to-java-object
如果未明确存储在文件中,您也可以以字符串格式传递 json 输入。
将您的 Information
class 更改为以下内容(注意 Jackson 注释以匹配 JSON 属性):
@Getter
@Setter
class Information {
@JsonProperty("query_name")
String name;
@JsonProperty("query_type")
String type;
List<User> details;
}
然后你只需要使用 Jackson 的 ObjectMapper
将你的 JSON String 转换为相应的对象如下:
ObjectMapper objectMapper = new ObjectMapper();
String informationJsonFromDatabase = ""; // whatever logic you need here to get the String from the database
Information information =
objectMapper.readValue(informationJsonFromDatabase, Information.class);
我对 Integer age;
有疑问,因为在您的 JSON 中它表示为字符串,所以我不完全确定 Jackson 是否能够进行转换。如果不是,您需要将 属性 更改为 String age;
或为 User
class.
创建自定义反序列化器
我有一个 postgresql 函数 returns json:
{
"query_name": "information1",
"query_type": "information2",
"details": [
{
"name": "Test01",
"age": "35",
"isUpdate": false
}
]
}
如何使用 Java 反序列化它?
我的POJO
@Getter
@Setter
class Information {
String name;
String type;
List<User> details;
}
@Getter
@Setter
class User {
String name;
Integer age;
Boolean isUpdate;
}
我想使用 ObjectMapper 但我做不到)
你可以这样做...
class Information {
String queryName
String queryType
List<User> details
}
对你有用吗?给我留言
创建该结构的 class 并使用 ObjectMapper.readValue() 方法对其进行反序列化。
这可以帮助:https://www.baeldung.com/jackson-object-mapper-tutorial#2-json-to-java-object
如果未明确存储在文件中,您也可以以字符串格式传递 json 输入。
将您的 Information
class 更改为以下内容(注意 Jackson 注释以匹配 JSON 属性):
@Getter
@Setter
class Information {
@JsonProperty("query_name")
String name;
@JsonProperty("query_type")
String type;
List<User> details;
}
然后你只需要使用 Jackson 的 ObjectMapper
将你的 JSON String 转换为相应的对象如下:
ObjectMapper objectMapper = new ObjectMapper();
String informationJsonFromDatabase = ""; // whatever logic you need here to get the String from the database
Information information =
objectMapper.readValue(informationJsonFromDatabase, Information.class);
我对 Integer age;
有疑问,因为在您的 JSON 中它表示为字符串,所以我不完全确定 Jackson 是否能够进行转换。如果不是,您需要将 属性 更改为 String age;
或为 User
class.