SAP标准的REST adapter有着XML/JSON转换的效果,它很有用,因为一方面SAP
PI/PO
中间以XML格式处理数据,而一方面,在拍卖REST架构风格的时候,JSON才是事实上的格式。

可是,观望下网上关于REST
Adapter的相关题材,能够汲取三个定论:XML音信处理后转变的JSON输出并非总是不错的,有时候它会把人引进歧途。SAP积极地增长了REST
Adapter的内地点作用——定制化和特性丰盛的JSON处理正是内部2个首要领域。许多辅车相依个性已经在记录在SAP
Help的文书档案中。不过里面包车型大巴壹项极度强劲、灵活的意义——名称为“增强XML/JSON转换”的法力,却只是不难地在SAP
Note
2175218
中聊到。在本文中,笔者将演说那一个成效的用法,以及提供实用参数化方法的底细。

在里头,REST
adapter使用了第一方的Jettison以落成JSON处理。在标准配置中,REST
adapter正视于Jettison处理器默许的变换逻辑,它不会惦念或涉嫌相应的音讯类型中定义的得力成分属性,而是有协调的优化和种类机制,该机制基于所要处理的XML文档的要素的值的本来性质,而非音讯的XSD
schema。那样1来的结果是,有时转换会促成不合供给的出口。以下是四个壹般的例子:

  • 假定二个XML成分定义为数组,可是在被转换的XML有效数据中只含有1行,Jettison处理器将可能会将其更换为非数组类型
  • 壹经三个XML成分定义为字符串,不过在被更换的XML有效数据中唯有数字型的值,Jettison处理器将或然会将其转移为平头类型

在好几情况下,不合适的类型转换对先后而言是不可承受的——这也是增高XML/JSON转换能够辅助大家消除的标题。

SAP Note
2175218介绍了拉长XML/JSON转换背后的二个设法,它是有关JSON处理器怎样对待特别的XML成分的斐然的描述。让大家依照二个练兵例子来考试那么些效应:

 

上边是三个音讯类型的定义,它用来共同场景的回到音讯,大家在里头使用了REST
sender channel。如你所见,它涵盖了各连串型的要素,包罗二个数组:

图片 1

 

 XML格式的以身作则回复消息是如此的:

图片 2

 

运用REST sender
channel的标准配置,将上边的XML信息格式化后的JSON相应新闻是如此的:

图片 3

 

能够小心到,有个别因素类型被指鹿为马的解释了,比如:

  • 要素“ID”未有被视为字符串,而是数字——Jettison处理器将它看作数字相比较,因为成分的值只含有数字类型的字符;
  • 要素“Properties”未有被视为数组,Jettison处理器将它看作嵌套结构中的非数组对象,因为那么些成分只含有“Property”的二个子实体(未有此外兄弟成分)。

让大家透过抓实XML/JSON转换成修复它。在REST sender
channel中,增强XML/JSON转换的参数化新闻囤积在表 “Custom XML/JSON
Conversion
Rules”中。上面是指向事先高亮的有毛病的连串和转换不合作的布置。

 

图片 4

 

在再度实施接口后,检查被格式化为JSON的响应新闻,能够侦察到,今后时有产生了天经地义的JSON输出:

图片 5

 

自身在合法资料中尚无观察有关于参数化的细节,所以让自家来总括下坚实XML/JSON转换中可以利用的可接受的和管事值,以及有关它们的选拔的解释性表达。内容在下表:

字段

描述

有效值

XML 命名空间

XML成分的命名空间

 

前缀

XML成分命名空间前缀

 

名称

XML元素名

 

类型

XML成分类型。

以下项目是日前支撑的:

String, Integer, Decimal, Boolean.

要是它是有效值列表中涉及的值之壹,就不会区分类型值的标记。

一旦未有点名值,不会利用钦点的XML/JSON转换指令,而是会履行默许的Jettison处理器逻辑。

String type

string

xs:string

xsd:string

Integer type

int

integer

xs:integer

xsd:integer

Decimal type

decimal

numeric

float

xs:decimal

xsd:decimal

Boolean type

bool

boolean

xs:boolean

xsd:boolean

数组类型

XML成分是或不是是数组的提示符。

假如它是有效值列表中涉及的值之壹,就不会区分类型值的记号。

如若未有点名值,数组指示符默许为false。

假诺是数组:

1

true

yes

万壹不是数组:

0

false

no

默认值

在XML/JSON转换战败的图景下会赋给JSON成分的值。

 

譬如说,在下面给的demo中,成分“Quantity”的值会被看成整数处理。假如原始值无法转换为整数(比如含有字母),JSON输出会获得一个私下认可值。在该意况下,那么些值是“0”。

亟待注意的是,对于默许值而言,系统不会指向在“TYPE”中内定的类型实行成分类型检查——它会被当作字符串。在那种办法下,比如,你能够钦命私下认可值“Invalid
value”给“Quantity”。系统不会唤起错误,无论是在communication
channel激活的时候依旧REST
adapter运转时期处理相关新闻的时候,尽管暗中认可值和要素类型(整型)完全不相称。记住那一点,应当注意设置暗中认可值时要维持其类别的一致性。

Any value.

上面包车型大巴值有点专门:

“null”

(带引号) – 被诠释为字符串“null”

null

(无引号) – 被演说为null

“”

(唯有引号 – 被解释为空字符串

 

正文链接:http://www.cnblogs.com/hhelibeb/p/7395567.html

英文原来的文章:REST Adapter in PI/PO: Enhanced XML/JSON
Conversion

参照阅读:PI REST Adapter – JSON to XML
conversion

相关文章

网站地图xml地图