GsonFilter
该插件主要用于Json报文的组装以及解析,简化对Json报文的处理和收发过程。
插件配置
- GsonFilter插件所在位置:lib==>be-esb-plugin-base-2.0.jar==>com==>brilliance==>eibs==>core==>service==>instance==>impl==>GsonFilter
- GsonFilter插件需要继承插件共有的父类AbsFilter
- commons.xml的filters中注册该插件,该插件在解报时需要通过参数设置对应的映射(map)或队列(list)类型
<filter id="gsonFilter" class="GsonFilter"/><!-- Json报文处理类 -->
属性 | 说明 |
---|---|
id | 注册时指定的id命名属性,后续在使用时通过该名称进行插件的调用 |
class | 声明插件时映射的插件类的位置,指向该插件的类文件,注意插件存放的包结构必须严格保持一致才可生效(com.brilliance.eibs.core.service.instance.impl) |
parameter | 指定解报时的具体类型,有映射(map)和队列(list)两种(name="jsontype" value="指定类型") |
- 在进行Json报文解析时,需要单独配置其解析的形式为映射(map)或者队列(list),该独立配置可以写在接口中
<!-- 指定解报的具体类型 -->
<filter id="jsonmapFilter" class="GsonFilter">
<parameter name="jsontype" value="map" />
</filter>
<filter id="jsonlistFilter" class="GsonFilter">
<parameter name="jsontype" value="list" />
</filter>
属性配置
属性 | 描述 | 是否必须 | 示例 |
---|---|---|---|
ref | 引用插件名称 | 是 | 引用commons.xml注册的MQFilter插件指定的id值 |
type | 指定插件功能类型 | 是 | 1.当filter的type为out时,表示组报,无需指定类型 2.当filter的type为in时,表示解报,需要指定组装报文的类型 |
示例
利用插件进行JSON报文组报及解报
- 组装映射类型的Json时,etag和value为键值对。组装队列类型的Json时,value指定队列元素的值。
- 处理多层复杂的Json类型时,映射类型和队列类型的组装结果均可以再次进行组装,即支持嵌套。
- 解析报文时需要指定解析报文的类型,否则会出现错误
<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://www.brilliance.com.cn/interface" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.brilliance.com.cn/interface ../etc/schema/interface.xsd">
<interface id="testdemo" type="client" basePackage="com.brilliance.eibs.core.service.instance.impl" version="2.0">
<transaction id="jsontest">
<step id="1">
<filter ref="publicFilter" type="in">
<field tag="JsonString" value="[{'id':'123','value':'name'},{'id':'123','value':'name'},{'id':'123','value':'name'}]" scope="this"/>
</filter>
<!--进行指定Json类型解报-->
<filter ref="jsonlistFilter" type="in">
<field tag="id1" etag="0-0" value="${this[0].id}" />
<field tag="value1" etag="0-1" value="${this[0].value}" />
<field tag="id2" etag="1-0" value="${this[1].id}" />
<field tag="value2" etag="1-1" value="${this[1].value}" />
<field tag="id3" etag="2-0" value="${this[2].id}" />
<field tag="value3" etag="2-1" value="${this[2].value}" />
<log value="id1:${id1},value1:${value1},id2:${id2},value2:${value2},id3:${id3},value3:${value3}"/>
</filter>
<!--进行Json的组报-->
<filter ref="gsonFilter" type="out">
<field etag="0-0" value="${this[0].id}" />
<field etag="0-1" value="${this[0].value}" />
<field etag="1-0" value="${this[1].id}" />
<field etag="1-1" value="${this[1].value}" />
<field etag="2-0" value="${this[2].id}" />
<field etag="2-1" value="${this[2].value}" />
</filter>
<log value="${this}"/>
</step>
</transaction>
</interface>
<filters>
<filter id="jsonmapFilter" class="GsonFilter">
<parameter name="jsontype" value="map" />
</filter>
<filter id="jsonlistFilter" class="GsonFilter">
<parameter name="jsontype" value="list" />
</filter>
</filters>
</root>
报文解析演示结果展示
- Json组报效果展示
- Json解报效果展示