java - 无法将 Json String 转换为 Java 对象

标签 java json list jackson-databind

我无法将给定的 Json 字符串转换为 java 对象

验证了Json格式,是正确的。

@JsonIgnoreProperties(ignoreUnknown = true)
public class DevPol {

    private String id;
    private Header header;

    //Setters and Getters
}

@JsonIgnoreProperties(ignoreUnknown = true)
public class Header {

    private String name;
    private String lastUpdate;
    private int priority;
    private boolean active;

    //Setters and Getters
}

import com.fasterxml.jackson.databind.ObjectMapper;
public class ConvertJsonToJava {

    static String apiResult = "[ {\"Id\":\"5899503ad06f7f0008817430\",  \"Header\":{  \"name\":\"ClCol\"," + 
            "         \"lastupdate\":\"2017-02-07T04:42:34.654Z\", \"priority\":1,  \"active\":true } }," + 
            "   { \"Id\":\"5899503ad06f7f0008817431\",\"Header\":{  \"name\":\"SysPol\"," +
            " \"lastupdate\":\"2017-02-07T04:42:34.659Z\", \"priority\":2, \"active\":true } }]"; 

    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        DevPol[] devPOlArr = mapper.readValue(apiResult, DevPol[].class);
        for(DevPol devPol: devPOlArr) {

            System.out.println(devPol.getId());
        }
    }

}

我希望输出是 Id 值,但结果是 无效的 空

最佳答案

问题是 json 字段名称和 java 类字段中的大写字母。

如果可以在 json 和 java 中重命名 'Id' -> 'id'。否则,您应该将 json 属性名称添加到 java 字段:

public class DevPol {

    @JsonProperty("Id")
    private String Id;
    @JsonProperty("Header")
    private Header Header;

//Setters and Getters

}

关于java - 无法将 Json String 转换为 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58254520/

相关文章:

java - 无法解析字符串值 'jwt.secret' 中的占位符 "${jwt.secret}"

javascript - 如何使用jquery追加列表

c++ - 如何使用 C++ 11 样式的非默认可构造分配器指定初始大小?

java - 使用 Jersey 将名称添加到数组

jquery - 如何使用json获取youtube中的视频图像URL

java - Rest Assured Framework 完成 JSON 响应匹配

python - 在巨大列表中查找/搜索的最有效方法(python)

java - lambda的序列化和反序列化

检索文件名中包含变音符号的 url 时出现 java.io.FileNotFoundException

使用 GSON 将 Java 复杂对象转为 JSON