SAP标准的REST adapter有着XML/JSON转换的功效,它那个有因此,因为一方面SAP
PI/PO中间以XML格式处理多少,而单方面,在拍卖REST架构风格的早晚,JSON才是实在的格式。

只是,观察下网上有关REST
Adapter的系题材,可以得出一个结论:XML消息处理后变更的JSON输出并非总是对的,有时候它见面将人引入歧途。SAP积极地增进了REST
Adapter的各国地方机能——定制化和特色丰富的JSON处理便是内一个要领域。许多有关特性都于笔录在SAP
Help的文档中。但是里面的相同起相当强大、灵活的力量——名吧“增强XML/JSON转换”的效果,却只是略地于SAP
Note
2175218未遭提及。在本文中,我以阐述这个作用的用法,以及供实用参数化方法的细节。

在其间,REST
adapter使用了第三方的Jettison以实现JSON处理。在标准配置中,REST
adapter依赖于Jettison处理器默认的变换逻辑,它不见面设想或者关系相应的音讯类型中定义的实用元素属性,而是发生自己之优化和类机制,该机制基于所设处理的XML文档的素的价值的当然性质,而非消息之XSD
schema。这样一来的结果是,有时转换会招不合要求的出口。以下是零星单平凡的例子:

  • 若一个XML元素定义也数组,但是以叫换的XML有效数据遭到独包含一行,Jettison处理器将可能会见拿其变为非数组类型
  • 倘一个XML元素定义也字符串,但是于被转换的XML有效数据遭到仅仅发数字型的价值,Jettison处理器将可能会见以那个更换为平头类别

以好几情况下,不合适的类型转换对先后而言是不行接受的——这也是提高XML/JSON转换可以助我们缓解之题目。

SAP Note
2175218介绍了增长XML/JSON转换背后的一个想法,它是关于JSON处理器如何对待特别之XML元素的斐然的叙述。让咱根据一个练例子来考查这个效果:

 

脚是一个信息类型的概念,它用来共同场景的回消息,我们当中间使用了REST
sender channel。如您所显现,它包含了多种类型的要素,包含一个数组:

XML 1

 

 XML格式的言传身教回复消息是如此的:

XML 2

 

动用REST sender
channel的标准配置,将方面的XML消息格式化后底JSON相应信息是如此的:

XML 3

 

可小心到,某些因素类型为错误的说明了,比如:

  • 要素“ID”没有受视为字符串,而是数字——Jettison处理器将它当做数字相比,因为元素的价仅含数字型的字符;
  • 要素“Properties”没有于视为数组,Jettison处理器将其当嵌套结构被的非数组对象,因为是元素就含“Property”的一个子实体(没有其余兄弟元素)。

深受我们通过增强XML/JSON转换来修复它。在REST sender
channel中,增强XML/JSON转换的参数化信息囤积在表 “Custom XML/JSON
Conversion
Rules”中。下面是本着事先高亮的起题目的品类及转换不匹配的配置。

 

XML 4

 

当还实施接口后,检查为格式化为JSON的响应消息,可以观测到,现在时有发生了对的JSON输出:

XML 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地图