如何在后端从JSON读取数组

时间:2019-06-29 14:56:00

标签: json hibernate spring-boot spring-data

前端以这种结构发送JSON:

{
    "orderElement":
        [
            {
            "product": 
              {
               "id" : 3,
               "name" : "product1",
               "description" : "desc1",
               "category": 
                       { 
                        "id":2, 
                       "name" : "cat1"
                       },
               "price" : 112},
               "quantity" : 1
            },
            {
            "product": 
              {
               "id" : 4,
               "name" : "product2",
               "description" : "desc2",
               "category":                            
                       {
                       "id" : 3, 
                       "name" : "cat2"
                       },
                price" : 353
              },
               "quantity" : 1
            }
        ],
      "user" 
           {
            "id" : 109,
            "lastName" : "a",
            "firstName" : "a",
            //rest of parameters
           }
 }
ts组件上使用的

console.log返回包含所有数据的完整JSON。

但是,当将其发送到后端时,orderElement被清空了(向用户发送OK,在服务器端填充了OrderPlaceTime):

@Component
public class OrderConverter implements Converter<Order, OrderDTO> {

    @Override
    public Order convertToEntity(OrderDTO dto) {
        Order order = new Order();
        order.setId(dto.getId()); //ok
        order.setUser(dto.getUser()); //ok
        order.setOrderPlaceTime(now()); //ok
        order.setOrderElements(dto.getOrderElements()); <--- this is null, set sets null in order
        return order;
    }

主要问题是:

1)尽管正确地从前端发送了它,但为何仍为空

2)如果需要任何特殊的方法来解析JSON中的数组,在这种情况下该如何做?

提前谢谢

1 个答案:

答案 0 :(得分:0)

如JB Nizet所说:

可能是因为您的JSON属性被命名为orderElement,而您的DTO属性被命名为orderElements。

将“ orderElement”更改为“ orderElement s ”解决了该问题。

谢谢!