gpt4 book ai didi

java - 如何通过 JAXB 注释类序列化此 JSON 格式?

转载 作者:行者123 更新时间:2023-11-29 05:55:17 25 4
gpt4 key购买 nike

我正在寻找可以序列化为以下 json 格式的 JAXB 注释类。JSON 格式:{"name":"xyz","attr1":"attr1value","attr2":"attr2value",.....}}上面的JSON格式中,name是必填属性,其他人不是,但用户应该能够传递尽可能多的属性。

下面的JaxB注解类可以序列化JSON格式{"name":"xyz","openContentMap":{"attr1":"attr1value","attr2":"attr2value", 等等}}。但是我们想要 JaxB 注释,它可以序列化为这种格式 {"name":"xyz","attr1":"attr1value","attr2":"attr2value",.....}}

@XmlRootElement
public class MyJaxbBean {

private String name;
private Map<String, String> openContentMap = new HashMap<String, String>();

@XmlAnyElement
public Map<String, String> getOpenContentMap() {
return openContentMap;
}

@XmlAnyElement
public void setOpenContentMap(String key, String value) {
openContentMap.put(key, value);
}

public String getName() {
return name;
}

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

public MyJaxbBean() {
}

}

最佳答案

使用 org.codehaus.jackson.annotate.JsonAnyGetterorg.codehaus.jackson.annotate.JsonAnySetter

@XmlRootElement
public class MyJaxbBean
{
private String name;

private Map<String, String> openContentMap = new HashMap<String, String>();

public String getName()
{
return name;
}

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

@JsonAnyGetter
public Map<String, String> getOpenContentMap()
{
return openContentMap;
}

@JsonAnySetter
public void add(final String key, final String value)
{
openContentMap.put(key, value);
}
}

效果不错

  String json = "{\"name\":\"xyz\",\"attr1\":\"attr1value\",\"attr2\":\"attr2value\"}";
MyJaxbBean agr = new ObjectMapper().readValue(json, MyJaxbBean.class);
System.out.println(agr.getName() + " " + agr.getOpenContentMap());

关于java - 如何通过 JAXB 注释类序列化此 JSON 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12396869/

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