Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用数组读取json文件,如何修改代码以读取带有result和HD的json_Java_Spring_Spring Boot - Fatal编程技术网

Java 如何使用数组读取json文件,如何修改代码以读取带有result和HD的json

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"

我写这篇文章是为了写一个小的miroservice来读取json文件并将其放入postgredb。目前运行良好。但是现在我想用数组修改我的json文件。以前没有“结果”和“HD”

{
"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() {

}
}