GsonFilter

该插件主要用于Json报文的组装以及解析,简化对Json报文的处理和收发过程。

插件配置

  • GsonFilter插件所在位置:lib==>be-esb-plugin-base-2.0.jar==>com==>brilliance==>eibs==>core==>service==>instance==>impl==>GsonFilter
  • GsonFilter插件需要继承插件共有的父类AbsFilter

1666162740194

  • 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组报效果展示

1666171987433

  • Json解报效果展示

1666172014422

results matching ""

    No results matching ""