繁体   English   中英

如何读取带有数组的 json 文件,如何修改我的代码以读取具有结果和 HD 的 json

[英]How to read a json file with array, how can i modify my code to read json which has result and HD

我正在写一个小的 miroservice 来读取 json 文件并将其放入 postgredb。 目前它工作正常。 但现在我想用数组修改我的 json 文件。 以前没有“结果”和“高清”。

{
"result": {
  "HD": [
  {
    "LOGADDR": "1000002624",
    "CATEGORY": "ADD",
    "NAME": "POLYTEC COMPOSITES GERMANY",
    "STATUS": "ACTI"
   }
  ]
 }
}

我下面的代码工作正常,没有结果和高清

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());
        }

    };
}

我的域文件

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

}
}

您可以像 JSON 一样更新您的域 object 树:

    @Getter
    class Foo {
        Result result;
    }

    @Getter
    class Result {
        List<Response> hd;
    }

    @Getter
    class Response {
       ...
    }

    ObjectMapper mapper = new ObjectMapper();
    TypeReference<Foo> typeReference1=new TypeReference<Foo>(){};

    InputStream inputStream1 = TypeReference.class.getResourceAsStream("/json/response.json");try
    {
        Foo foo = mapper.readValue(inputStream1, typeReference1);
        List<Response> responses = foo.getResult().getHd();
        responseService.save(responses);
        System.out.println(responses);
        System.out.println("response saved");
   ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM