简体   繁体   English

解析来自 REST API 的 json 响应,其字段名称为 id

[英]Parsing of json response from REST API which has id as field name

I want to parse the json string and form a pojo object but the response is somewhat unusual.我想解析 json 字符串并形成一个 pojo 对象,但响应有点不寻常。 I have folloing type of response from API我有以下类型的 API 响应

  "data": {
          "12": {
             "value": "$0.00",
             "order_id": "12",
             "order_date": "2020-08-26 15:50:05",
             "category_name": "Games",
             "brand_id": "4",
             "denomination_name": "AED 50",
             "order_quantity": "1",
             "vendor_order_id": "A-123",
             "vendor_location": "",
             "vouchers": {
                "804873": {
                   "pin_code": "41110AE",
                   "serial_number": "fddfgfgf1234444"
                }
             }
          },
          "15": {
             "value": "$0.00",
             "order_id": "15",
             "order_date": "2020-08-26 08:39:11",
             "category_name": "Games",
             "brand_id": "52",
             "brand_name": "PlayStation",
             "denomination_name": "$20",
             "order_quantity": "1",
             "vendor_order_id": "A-316",
             "vendor_location": "",
             "vouchers": {
                "806328": {
                   "pin_code": "fdfd",
                   "serial_number": "fawwwww"
                }
             }
          }
    }
    }

How do I parse this response since inside data the field name is order id same with voucher我如何解析此响应,因为内部数据字段名称与凭证的订单 ID 相同

If you use Jackson JSON library, you should have POJOs like those shown below and use PropertyNamingStrategy.SnakeCaseStrategy to handle property names in the input JSON:如果您使用 Jackson JSON 库,您应该拥有如下所示的 POJO,并使用PropertyNamingStrategy.SnakeCaseStrategy来处理输入 JSON 中的属性名称:

// top-level container
public class Response {
    private Map<Integer, Order> data;
    // getter/setter
}

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class Order {
    private String value; // may be some Currency class
    private Integer orderId;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime orderDate;

    private String categoryName;
    private Integer brandId;
    private String brandName;
    private String denominationName; // may be Currency too
    private Integer orderQuantity;
    private String vendorOrderId;
    private String vendorLocation;
    private Map<Integer, Voucher> vouchers;

    // getters/setters
}

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class Voucher {
    private String pinCode;
    private String serialNumber;
    
    // getters/setters
}

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

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