java - JSON 解析给我 NULL 数据

标签 java json jackson

我正在使用 Jackson 库来尝试解析我的 JSON 文件。我的 JSON 实际上是 JSON ObjectsARRAY:

JSON 数组:

[
 {
   "Id" : "0",
  "name" : "John"
},
{
   "Id" : "1",
   "name" : "Doe"
}
]

POJO 类:

@JsonIgnoreProperties(ignoreUnknown = true)
public class QuestData {
    private String Id;

    private String name;

    public String getId() {
        return Id;
    }

   public String getName() {
       return name;
   }
}

解析 JSON:

  private void parseJSON(File jsonFile) {
        try {
            byte[] jsonData = Files.readAllBytes(jsonFile.toPath());
            System.out.println(new String(jsonData));

            ObjectMapper mapper = new ObjectMapper();

            List<QuestData> questDataList = mapper.readValue(jsonData, mapper.getTypeFactory().constructCollectionType(List.class, QuestData.class));
            System.out.println("Read values: " + questDataList.get(0).getId());

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

我的第一个打印语句打印回正确的 Json 数据(作为字符串)。

但是下一个打印语句显示NULL。我什至尝试遍历整个列表,看看是否有不为空的内容,但没有运气。

我不知道我在这里做错了什么。

最佳答案

Jackson 默认情况下会使用 setter 方法来设置字段。因此添加 setter ,例如:

@JsonProperty("Id")  // otherwise Jackson expects id for setId
public void setId(String id) {
    Id = id;
}

或者,告诉 Jackson 查找具有此配置的字段:

mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);

在这种情况下,Jackson 会将类 Id 中的字段名称与 JSON Id 中的字段名称进行匹配

关于java - JSON 解析给我 NULL 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44544124/

相关文章:

java - 制造情况!部分程序使用 3 种编程语言。使用哪个构建工具?

json - 如何访问 Dart shelf post body 参数?

json-LD类属性关系建模

java - 如何使用 Jackson 将复杂的 Json 对象序列化为 HTTP Get 的 QueryString?

java - 在数据库中存储形状的最佳方式是什么

java - 了解配置文件中的主要注释

java - Ceylon 比 Java 或 Scala 有什么优势

php - "get_object_vars() expects parameter 1 to be object, string given"

java - 基于唯一属性的存在使用 Jackson 反序列化多态类型

java - Jackson 反序列化空数组失败