本文示例代码:https://github.com/flym/train-propertytranslate
本文描述了这样一个场景:
针对于一个功能场景,第三方过来的数据格式均不相同,但需要通过一个统一的功能接口来进行调用,然后根据不同来源数据格式进行不同的数据展现。在后端实现时,尽量不要通过if else进行硬编码,而是通过配置的方式来完成数据的处理和呈现。
场景中提到了几个概念,如下:
- 功能场景和数据来源:分组信息,针对同一个来源,其格式是相同的。不同来源的数据格式不一样
- 统一功能接口:调用入口是统一的,即方法名,参数定义,以及返回格式都是相同的,仅参数内容不相同
- 配置化:场景是通用的,可以通过配置来实现,而不是在业务代码中硬编码
- 不同的数据展现:可以针对不同的分组和场景通过模板来进行渲染,而模板本身是可以配置的,这样即隔离了数据封装这一层。
举例如下, 如下的一个数据内容:
{
"trade_fullinfo_get_response": {
"trade": {
"seller_nick": "我在测试",
"pic_name": "T1jVXXXePbXXaoPB6a_091917.jpg",
"receiver_name": "东方不败",
"buyer_message": "要送的礼物的,不要忘记的哦",
"receiver_city": "杭州市",
"receiver_district": "西湖区",
"orders": {
"order": [
{
"title": "苹果",
"unit": "个",
"oid": 1,
"price": 1.1,
"sum": 1
}
]
},
}
}
}
通过转换服务处理,可以展现为下面两种不同的数据内容(以html渲染为例)


本文从数据格式,转换器,转换过程,数据渲染几个方面来描述这一思路.
继续阅读“使用统一转换服务来处理不同数据展现的思路和实现”