Java 如何使用数组读取json文件,如何修改代码以读取带有result和HD的json
我写这篇文章是为了写一个小的miroservice来读取json文件并将其放入postgredb。目前运行良好。但是现在我想用数组修改我的json文件。以前没有“结果”和“HD”Java 如何使用数组读取json文件,如何修改代码以读取带有result和HD的json,java,spring,spring-boot,Java,Spring,Spring Boot,我写这篇文章是为了写一个小的miroservice来读取json文件并将其放入postgredb。目前运行良好。但是现在我想用数组修改我的json文件。以前没有“结果”和“HD” { "result": { "HD": [ { "LOGADDR": "1000002624", "CATEGORY": "ADD", "NAME"
{
"result": {
"HD": [
{
"LOGADDR": "1000002624",
"CATEGORY": "ADD",
"NAME": "POLYTEC COMPOSITES GERMANY",
"STATUS": "ACTI"
}
]
}
}
我下面的代码工作正常,没有结果和HD
CommandLineRunner runner(ResponseService responseService) {
return args -> {
// read JSON and load json
ObjectMapper mapper = new ObjectMapper();
TypeReference<List<Response>> typeReference1 = new TypeReference<List<Response>>() {};
InputStream inputStream1 = TypeReference.class.getResourceAsStream("/json/response.json");
try {
List<Response> responses = mapper.readValue(inputStream1, typeReference1);
responseService.save(responses);
System.out.println(responses);
System.out.println("response saved");
} catch (IOException e) {
System.out.println("not saved" + e.getMessage());
}
};
}
您可以像更新JSON一样更新域对象树:
@Getter
福班{
结果;
}
@吸气剂
班级成绩{
列表hd;
}
@吸气剂
班级反应{
...
}
ObjectMapper mapper=新的ObjectMapper();
TypeReference typeReference1=新的TypeReference(){};
InputStream inputStream1=TypeReference.class.getResourceAsStream(“/json/response.json”);尝试
{
Foo Foo=mapper.readValue(inputStream1,typeReference1);
列表响应=foo.getResult().getHd();
responseService.save(响应);
System.out.println(响应);
System.out.println(“已保存响应”);
...
非常感谢!它说实体现在不能为null,因为结果类getHD()正在返回null。我做错了什么?`@Getter class Result{;@JsonProperty(“HD”)List HD=new ArrayList();}“非常感谢!这正是我要找的!只是出于好奇,我只是想知道如果我继续接收更多的阵列会发生什么更多的HD1,HD2…..HDN如果我不知道它们在结果中发送了多少阵列,如何读取这些结果
@AllArgsConstructor
@Data
@Entity
@Table(name = "receive")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Response {
@Id
@JsonProperty("LOGADDR")
private String LOGADDR;
@JsonProperty("CATEGORY")
@Column(name = "CATEGORY")
private String CATEGORY;
@JsonProperty("NAME")
@Column(name = "NAME")
private String NAME;
@JsonProperty("STATUS")
@Column(name = "STATUS")
private String STATUS;
public Response() {
}
}