【问题标题】:Unable to parse json with List elements inside it无法解析其中包含 List 元素的 json
【发布时间】:2017-09-21 13:17:06
【问题描述】:

我有一个 Java 类,里面有 2 个 List 对象,我正在 Json 序列化父类。

@JsonSerialize
public class RequestSalesJson {
    @JsonProperty("nonUniqueSalesList")
    private List<SalesDataJson> getNonUniqueSalesDataJson;
    @JsonProperty("uniqueSalesList")
    private List<SalesDataJson> uniqueSalesDataJson;

    public List<SalesDataJson> getGetNonUniqueSalesDataJson() {
        return getNonUniqueSalesDataJson;
    }

    public void setGetNonUniqueSalesDataJson(List<SalesDataJson> getNonUniqueSalesDataJson) {
        this.getNonUniqueSalesDataJson = getNonUniqueSalesDataJson;
    }

    public List<SalesDataJson> getUniqueSalesDataJson() {
        return uniqueSalesDataJson;
    }

    public void setUniqueSalesDataJson(List<SalesDataJson> uniqueSalesDataJson) {
        this.uniqueSalesDataJson = uniqueSalesDataJson;
    }
}

SalesReturnJson.java

@JsonSerialize
public class SalesReturnJson {
    @JsonProperty("starttime")
    private String startTime;
    @JsonProperty("pn")
    private String partNumber;
    @JsonProperty("so")
    private String SalesOrderNumber;
    @JsonProperty("wo")
    private String workOrderNumber;
    @JsonProperty("loc")
  //other variables declared..
}

Controller.java :-

@RequestMapping(value = "/addAllSalesData",method = RequestMethod.POST)
    public void addAllSalesData(@RequestBody RequestSalesJson requestSalesJsons){
        log.info("POST : '/addSalesData'");
        try{
            System.out.print("In Controller "+requestSalesJsons.getUniqueSalesDataJson());
            //salesService.processSalesData(requestSalesJsons);
        }
        catch(Exception e){
          // return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
        }
    } 

这里的值即将为空。

下面是我使用的 json :-

{ "uniqueSalesJson": [{"SO":4000955,"Part Number":"000","Locator":255638,"Lot Number":"P01-2059139","Reservation Quantity":2,"Status":"Released to warehouse","COE":"Fabrication","ORG":"P07","Start_Time":"2017-09-19 11:21:36"},{"SO":4000955,"Part Number":"000","Locator":255652,"Lot Number":"P01-2059140","Reservation Quantity":10,"Status":"Released to warehouse","COE":"Fabrication","ORG":"P07","Start_Time":"2017-09-19 11:21:36"}],"nonUniqueSalesJson":[{"SO":4000992,"Part Number":"1276M84G15","Locator":12345,"Lot Number":"P01-2344141","Reservation Quantity":6,"Status":"PACKED","COE":"Fabrication","ORG":"P07","Start_Time":"2017-09-19 11:21:36"},{"SO":4000992,"Part Number":"1276M84G15","Locator":12345,"Lot Number":"P01-2344141","Reservation Quantity":6,"Status":"PICKED","COE":"Fabrication","ORG":"P07","Start_Time":"2017-09-19 11:21:36"}]}

【问题讨论】:

  • 在RequestMapping之上添加@RestController

标签: java json spring rest


【解决方案1】:

您的代码中有一些问题让我怀疑您的应用程序是否可以编译。首先,将SalesReturnJson 类重命名为SalesDataJson。 然后检查您的 @JsonProperty 注释。此处的值必须与 Json 字符串中的属性键完全匹配。重构所有这些东西会引导你到你的根实体类:

@JsonSerialize
public class RequestSalesJson {
    @JsonProperty("nonUniqueSalesJson")
    private List<SalesDataJson> nonUniqueSalesDataJson;
    @JsonProperty("uniqueSalesJson")
    private List<SalesDataJson> uniqueSalesDataJson;
    ...
}

还有你的SalesDataJson 类(缺少很多映射器通过配置忽略的属性):

@JsonSerialize
public class SalesDataJson {
    @JsonProperty("Start_Time")
    private String startTime;
    @JsonProperty("Part Number")
    private String partNumber;
    @JsonProperty("SO")
    private String SalesOrderNumber;
}

此示例与com.fasterxml.jackson.databind.ObjectMapper 一起按预期工作

希望有帮助!

【讨论】:

    猜你喜欢
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 2013-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多