gpt4 book ai didi

Java 和 Json : Wrapping elements when serialising

转载 作者:行者123 更新时间:2023-11-30 04:19:06 26 4
gpt4 key购买 nike

只是想知道是否有办法做到这一点 - 我有一个类,比如

class MyClass {
private String name;
private String address;
private String number;
}

当我使用 Jackson 将其序列化为 Json 时,我想将 String 变量包装在一起,所以它看起来像

{
"Strings": {
"name" : "value",
"address" : "value"
}
}

如果不将这些变量包装在 MyClass 内的 List 或 Map 类中...这可能吗?

最佳答案

您还可以在 POJO 类中添加“Strings”、“Intigers”等的附加 getter。这些方法应该返回 Map 作为结果。考虑下面的代码:

import java.util.LinkedHashMap;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonProgram {

public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
MyClass myClass = new MyClass();
myClass.setAddress("New York, Golden St. 1");
myClass.setName("James Java");
myClass.setNumber("444");

System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(myClass));
}
}

class MyClass {

private String name;
private String address;
private String number;

@JsonIgnore
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@JsonIgnore
public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

@JsonIgnore
public String getNumber() {
return number;
}

public void setNumber(String number) {
this.number = number;
}

@JsonProperty(value = "Strings")
public Map<String, String> getStrings() {
Map<String, String> map = new LinkedHashMap<String, String>();
map.put("name", getName());
map.put("address", getAddress());
map.put("number", getNumber());
return map;
}
}

结果:

{
"Strings" : {
"name" : "James Java",
"address" : "New York, Golden St. 1",
"number" : "444"
}
}

这可能不是您可以使用的最优雅的解决方案,但它很简单。

关于Java 和 Json : Wrapping elements when serialising,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17567395/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com