我正在尝试使用Self-Written Transformations for JSON
而不是Identity Transformation ID
从外部服务器反序列化 JSON。
但是,这仅适用于所有字段都按指定顺序排列(JSON 规范不保证)。缺少字段也是一个问题,会引发异常。
有什么方法可以复制ID
行为(任何顺序和缺少字段都可以),但让我自己定义字段名称?
示例 JSON
{
"d": {
"__abc": "111",
"results": [
{
"__metadata": {
"id": "SOME_ID",
"uri": "SOME_URI",
"type": "SOME_TYPE"
},
"FieldA": "X",
"FieldB": "X"
},
{
"__metadata": {
"id": "SOME_ID2",
"uri": "SOME_URI2",
"type": "SOME_TYPE2"
},
"FieldA": "Y",
"FieldB": "QQ"
}
]
}
}
感谢 Sandra 的转变:
<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates" version="0.1">
<tt:root name="ROOT" type="?"/>
<tt:template>
<object>
<object name="d">
<str name="__abc">
<tt:value ref=".ROOT.d.__abc"/>
</str>
<array name="results">
<tt:loop name="S_RESULT" ref=".ROOT.d.results">
<object>
<object name="__metadata">
<tt:skip/>
<!--<str name="id">
<tt:value ref="$S_RESULT.__metadata.id"/>
</str>
<str name="uri">
<tt:value ref="$S_RESULT.__metadata.uri"/>
</str>
<str name="type">
<tt:value ref="$S_RESULT.__metadata.type"/>
</str>-->
</object>
<tt:group>
<tt:cond>
<str name="FieldA">
<tt:value ref="$S_RESULT.FIELDA"/>
</str>
</tt:cond>
<tt:cond>
<str name="FieldB">
<tt:value ref="$S_RESULT.FIELDB"/>
</str>
</tt:cond>
</tt:group>
</object>
</tt:loop>
</array>
</object>
</object>
</tt:template>
</tt:transform>