Java 需要帮助解析这个JSON吗

Java 需要帮助解析这个JSON吗,java,json,parsing,pojo,jackson-databind,Java,Json,Parsing,Pojo,Jackson Databind,我有以下格式的JSON文件。第一个对象是客户信息,第二个对象是订单信息,然后是n个对象,用于获取每个订购零件的详细信息。我需要把它转换成Java POJO 这就是JSON的样子。这是从外部供应商,所以我必须与它的工作,因为它是 { "report_title": "title", "result_date": "08/12/2020 22:40:51", "company"

我有以下格式的JSON文件。第一个对象是客户信息,第二个对象是订单信息,然后是n个对象,用于获取每个订购零件的详细信息。我需要把它转换成Java POJO

这就是JSON的样子。这是从外部供应商,所以我必须与它的工作,因为它是

{
    "report_title": "title",
    "result_date": "08/12/2020 22:40:51",
    "company": "company name",
    "add1": "123 main st",
    "add2": null,
    "city": "some city",
    "state": "state",
    "country": "United States of America",
    "zip": "12345",
    "name": "first last",
    "username": "firstlast",
    "role": "Manager"
},
{
    "launch_date": "08/12/2020 19:05:19",
    "client": "client1",
    "order_number": "1",
    "total_orders": "1",
    "type": "type",
    "status": "Finished",
    "reference": "order reference",
    "fulfill": "some name",
    "duration": "00:07:12",
    "order title": "title",
    "order_groups": null,
    "part_nums": "1,2,3",
  },
  {
  "part_num": "1234",
  "name": "asdf",
  "other_name": "asdf",
  "manufacturer": "aasdf",
  "status": "asdfasf",
  "id": 12345,
  "title": "some title",
  "type": "Ig",
  "notes": "long winded notes",
  "impact": null,
  "solution": null,
  },
  {
  "part_num": "1235",
  "name": "asdf1",
  "other_name": "asdf1",
  "manufacturer": "aasdf1",
  "status": "asdfasf1",
  "id": 12346,
  "title": "some title",
  "type": "Ig",
  "notes": "long winded notes",
  "impact": null,
  "solution": null,
  }
...

我创建了四个类:Customer、OrderInfo、OrderDetail和Enclosuring类Order


我想我把问题发得有点太早了

我接受了Ajay Kr Choudhary的建议,只是分别解析每个节点并分别映射它们。虽然没有我想要的那么高效或自动化,但总比没有好

 JsonNode rootNode = mapper.readTree(inputFile);
 Customer customer = mapper.treeToValue(rootNode.get(0), Customer.class);
 OrderInfo orderInfo = mapper.treeToValue(rootNode.get(1), OrderInfo.class);
 OrderDetail orderDetail = mapper.treeToValue(rootNode.get(2), OrderDetail.class);


您能否分享您的代码和结果,以便我们更好地了解您的尝试?@GiorgiTsiklauri添加了代码片段。不知道投反对票是为了什么?想解释一下吗?这可以在Jackson库的JsonNode的帮助下实现。您可以像这样解析字符串JsonNode inputNode=new ObjectMapper.readTreeinputString;现在,您可以使用索引在inputNode上调用get方法,并获得所需的字段。标准JSON文件应该只包含一个对象,其中其他对象本身就是字段值。这不是一个可怕的问题,但您不能将它们一起输入到标准JSON解析器中。@realponsignist我理解这一点。然而,由于这个json是从外部供应商处收到的,所以我无法控制它。
public static void main (String [] args) {
      File inputFile = new File(filepath);
       String content = Files.readString(Path.of(inputFile.getPath()), StandardCharsets.US_ASCII);

       ObjectMapper mapper = new ObjectMapper();
      
        Customer customer = mapper.readValue(content, Customer.class);
        OrderInfo orderInfo = mapper.readValue(content, OrderInfo.class);
}


@Data
@NoArgsConstructor
@JsonIgnoreProperties( ignoreUnknown = true )
public class Customer {
    @JsonProperty("report_title") private String reportTitle;
    @JsonProperty("result_date") private String resultDate;
    @JsonProperty("company") private String company;
...
}

 JsonNode rootNode = mapper.readTree(inputFile);
 Customer customer = mapper.treeToValue(rootNode.get(0), Customer.class);
 OrderInfo orderInfo = mapper.treeToValue(rootNode.get(1), OrderInfo.class);
 OrderDetail orderDetail = mapper.treeToValue(rootNode.get(2), OrderDetail.class);