我们需要使用REST API将证书列表发送到另一个应用程序。因此对象响应包含
[
{
"id":1,
"orderId":123,
"certificateStatus":true,
"certificateNo":"xyz123abc",
"customer":{
"id":36,
"email":"abc@cc.com",
"firstName":"abc",
"lastName":"dfg",
"user":{
"id":23,
"username":"abc@cc.com",
"enabled":true,
"kycStatus":false
},
"_links":{
"self":{
"href":"\/app_dev.php\/api\/v1\/customers\/36"
}
}
},
"orderItem":{
"id":60,
"quantity":2,
"unitPrice":177581,
"total":355162,
"units":[
{
"id":1711,
"adjustments":[
],
"adjustmentsTotal":0
},
{
"id":1712,
"adjustments":[
],
"adjustmentsTotal":0
}
],
"unitsTotal":355162,
"adjustments":[
],
"adjustmentsTotal":0,
"variant":{
"id":334,
"code":"pool-gold-1oz",
"optionValues":[
],
"position":0,
"translations":{
"en_US":{
"locale":"en_US",
"id":334
}
},
"version":2,
"tracked":false,
"channelPricings":{
"UK_WEB":{
"channelCode":"UK_WEB",
"price":177582
},
"US_WEB":{
"channelCode":"US_WEB",
"price":177581
}
},
"_links":{
"self":{
"href":"\/app_dev.php\/api\/v1\/products\/pool-gold-1oz\/variants\/pool-gold-1oz"
}
}
},
"_links":{
"order":{
"href":"\/app_dev.php\/api\/v1\/orders\/29"
},
"product":{
"href":"\/app_dev.php\/api\/v1\/products\/pool-gold-1oz"
},
"variant":{
"href":"\/app_dev.php\/api\/v1\/products\/pool-gold-1oz\/variants\/pool-gold-1oz"
}
}
}
}
]
我希望JSON响应类似于下面的示例响应 -需要额外的自定义字段 -状态码和消息 -额外的字段 -删除不需要的字段
{
"code":"custom_code_xxx",
"message":"Successful",
"data":[
{
"custom_extra_fields1":"asd",
"custom_extra_fields2":"xyz",
"id":1,
"orderId":123,
"certificateStatus":true,
"certificateNo":"xyz123abc",
"customer":{
"id":36,
"email":"abc@xyz.com",
"firstName":"abc",
"lastName":"dfg",
"user":{
"id":23,
"username":"abc@xyz.com",
"enabled":true,
"kycStatus":false
}
},
"orderItem":{
"id":60,
"quantity":2,
"unitPrice":177581,
"total":355162,
"unitsTotal":355162
}
}
]
}
我们可以使用任何最佳实践来简化JSON响应吗?或者我们需要以所需的格式构造一个数组
答案 0 :(得分:0)
当您使用类似JMS Serializer Bundle可以使用
Virtual Properties用于其他自定义字段。
然后用Groups和/或Exclusion Policies删除不需要的字段。
使用Symfony Serializer时,您至少可以选择Groups来排除某些字段。
要添加其他字段,我要么在实体中仅使用一个附加的Getter(没有干净的方法,但会有所帮助),或者使用自定义规范化器和/或编码器。
答案 1 :(得分:0)
斯特芬,
您应该创建一个新的数据传输对象,其中包含要用作响应的属性。然后将该对象作为json返回。
然后,您创建一个基于原始对象构建DTO的汇编程序类。