jackson spring json在值为null时返回空数组

px9o7tmv  于 7个月前  发布在  Spring
关注(0)|答案(1)|浏览(90)

在Spring应用程序中,我正在处理一个JSON字符串并在我的响应中返回它

public class MyResponse {
    private String name;

    private List<String> items = new ArrayList<>();

    // other properties, getters, and setters
}

如果没有设置items,id expect the response json to contain []...而是排除该属性。如何将此属性始终添加到JSON响应中?当它有数据时,像往常一样发送数组,当它不输出[]

yk9xbfzb

yk9xbfzb1#

你的问题非常不完整,因为你没有提到你使用什么库进行Json序列化/反序列化等。
我将提供一个示例代码,使用从Jackson库满足您的要求ObjectMapper

MyResponse.class

import java.util.ArrayList;
import java.util.List;

public class MyResponse {

    private String name;

    private List<String> items = new ArrayList<>();

    // other properties, getters, and setters

    public String getName() {
        return name;
    }

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

    public List<String> getItems() {
        return items;
    }

    public void setItems(List<String> items) {
        this.items = items;
    }

    @Override
    public String toString() {
        return "MyResponse{" +
                "name='" + name + '\'' +
                ", items=" + items +
                '}';
    }
}

TestClient.class

import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;

public class TestClient {

    public static void main(String[] args) throws IOException {

        String jsonStr = "{\"name\":\"Xyz\",\"items\":[]}";
        ObjectMapper objectMapper = new ObjectMapper();
        MyResponse myResponse = objectMapper.readValue(jsonStr,MyResponse.class);
        System.out.println(myResponse);
        System.out.println(objectMapper.writeValueAsString(myResponse));
    }
}

输出

MyResponse{name='Stacy', items=[]}

{"name":"Stacy","items":[]}

我希望这对你有帮助。
如果没有,请在问题中添加更多细节,以便社区可以帮助您。

相关问题