我有 Angular 發送的 JSON 字符串:{ "transaction_id": "1234", "usage": "Test Usage", "billing_address": { "first_name": "name", "last_name": "name", "address1": "street 1234", "zip_code": "11923" }, "shipping_address": { "first_name": "name", "last_name": "name", "address1": "street 1234", "zip_code": "11923" } }Java代碼:public class DTO { private String transaction_id; private String usage; private BillingAddress billingAddress; private ShippingAddress shippingAddress; ... getter/setter}public class BillingAddress { private String firstName; private String lastName; private String address1; private String zip_code; ... getter/setter}public class ShippingAddress { private String firstName; private String lastName; private String address1; private String zip_code; ... getter/setter}彈簧端點:@PostMapping(value = "/{id}", consumes = { MediaType.APPLICATION_JSON_VALUE }, produces = { MediaType.APPLICATION_JSON_VALUE }) public ResponseEntity<?> handleWpfMessage(@PathVariable("id") id, @RequestBody DTO data){ ....}映射內部對象billing_address以及shipping_address正確映射值的正確方法是什么?我是否需要添加注釋才能正確映射它們?
3 回答

慕沐林林
TA貢獻2016條經驗 獲得超9個贊
您應該將以下注釋添加到 DTO 類中:
public class DTO {
private String transaction_id;
private String usage;
@JsonProperty("billing_address")
private BillingAddress billingAddress;
@JsonProperty("shipping_address")
private ShippingAddress shippingAddress;
... getter/setter
}

哆啦的時光機
TA貢獻1779條經驗 獲得超6個贊
您的角度客戶端使用蛇盒。為了使 jackson 正確反序列化,您可以使用以下命令進行全局配置:
spring.jackson.property-naming-strategy=SNAKE_CASE
但是您也可以為特定的類配置它:
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) public class DTO { }

撒科打諢
TA貢獻1934條經驗 獲得超2個贊
正如已經提到的,您可以在類中使用 Jackson 屬性映射注釋DTO
。
@JsonProperty("billing_address") private BillingAddress billingAddress;
這意味著,在 json 中,屬性billing_address
將被分配給billingAddress
變量。
添加回答
舉報
0/150
提交
取消