首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有相同JsonProperty属性的不同字段

具有相同JsonProperty属性的不同字段
EN

Stack Overflow用户
提问于 2020-04-30 19:42:05
回答 1查看 135关注 0票数 1

在同一个类中序列化JSON时,是否可以具有如下所示的内容

代码语言:javascript
运行
复制
@JsonProperty("stats")
private StatsDetails statsDetails

@JsonProperty("stats")
private List<StatsDetails> statsDetailsList

因此,在形成json时,我可以只包含statsDetails或statsDetailsList中的一个。

我还有一个单独的JsonMapper代码,可以将这个pojo数据转换成json,我没有在这里介绍它。

EN

回答 1

Stack Overflow用户

发布于 2020-04-30 20:15:59

你不能这么做。它会抛出JsonMappingException jackson无法知道你指的是哪一个字段。您可以使用以下代码自己尝试:

POJOClass:

代码语言:javascript
运行
复制
import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;

import java.util.List;

public class POJOClass {

    public POJOClass(String object) {
        this.object = object;
    }

    public POJOClass(List<String> objectList) {
        this.objectList = objectList;
    }

    @JsonProperty("object")
    public String object;

    @JsonProperty("object")
    public List<String> objectList;
    @JsonGetter("object")
    public String getObject() {
        return object;
    }

    @JsonGetter("object")
    public List<String> getObjectList() {
        return objectList;
    }

    @JsonSetter("object")
    public void setObject(String object) {
        this.object = object;
    }

    @JsonSetter("object")
    public void setObjectList(List<String> objectList) {
        this.objectList = objectList;
    }
}

主类:

代码语言:javascript
运行
复制
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class MainClass {

    public static void main(String[] args) {
        String text = "f";
        List<String> list = Arrays.asList("a", "b", "c");
        ObjectMapper mapper = new ObjectMapper();
        try {
            String json = mapper.writeValueAsString(new POJOClass(text));
            String listJson = mapper.writeValueAsString(new POJOClass(list));
            System.out.println("json=" + json);
            System.out.println("listJson=" + listJson);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

输出:

代码语言:javascript
运行
复制
com.fasterxml.jackson.databind.JsonMappingException: Multiple fields representing property "object": POJOClass#object vs POJOClass#objectList
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61522570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档