gpt4 book ai didi

java - 解析 .json 文件 (java)。尝试从文件中获取项目,结果为 null

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:39 25 4
gpt4 key购买 nike

需要一些有关 java+json 的帮助。我的问题是关于 .json 文件。解析文件时,我得到空值。文件本身可能有问题,或者我使用了错误的解析路径。我有一个 PhotocameraDTO 类:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonIgnoreProperties(ignoreUnknown = true)
public class PhotocameraDTO {

@JsonProperty("id")
private int id;

@JsonProperty("name")
private String name;

@JsonProperty("type")
private String type;

@JsonProperty("sensor")
private String sensor;

@JsonProperty("lenses")
private String lenses;

@JsonProperty("display")
private String display;

public int getId() {
return id;
}

public String getName() {
return name;
}

public String getType() {
return type;
}

public String getSensor() {
return sensor;
}

public String getLenses() {
return lenses;
}

public String getDisplay() {
return display;
}

@Override
public String toString() {
return ("PhotocameraDTO [id=" + id + ", name=" + name + ", type=" + type + ", sensor=" + sensor + ", lenses="
+ lenses + ", display=" + display + "]");
}

和 .json 文件(制作了屏幕截图,因为代码未加载为有效):http://prntscr.com/ls3fgn

我的类(class)主要是:

package task2;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.TypeFactory;

public class PhotocamerasTypes {

public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
FileInputStream fis = new FileInputStream("src/main/resources/photocameras.json");

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
TypeFactory typeFactory = TypeFactory.defaultInstance();
List<PhotocameraDTO> photocameras = objectMapper.readValue(fis, typeFactory.constructCollectionType(ArrayList.class, PhotocameraDTO.class));

System.out.println(photocameras);
}
}

结果:[PhotocameraDTO [id=0、name=null、type=null、sensor=null、lens=null、display=null]]

现在我发现了错误,但我现在不知道如何修复它。我的 json 文件的结构如下: { [{....},{.....}] }如果 json 文件具有如下结构,我的代码可以工作: [{....},{.....}]

但我不知道如何修复文件开头带有“{”的结构的代码。

最佳答案

您可以添加类:

public class ItemsDTO<T> {
@JsonProperty("items")
private List<T> items;

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

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

然后修改main方法:

public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
FileInputStream fis = new FileInputStream("src/main/resources/photocameras.json");
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
ItemsDTO<PhotocameraDTO> itemsDto = objectMapper.readValue(fis, new TypeReference<ItemsDTO<PhotocameraDTO>>() {});
List<PhotocameraDTO> photocameras = itemsDto.getItems();
System.out.println(photocameras);
}

关于java - 解析 .json 文件 (java)。尝试从文件中获取项目,结果为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53675460/

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