【问题标题】:Replace JSON content in a .txt file with just a String (WSO2 Integrator)仅用字符串替换 .txt 文件中的 JSON 内容(WSO2 集成器)
【发布时间】:2019-04-18 23:15:03
【问题描述】:

我有一个如下所示的 .txt 文件:

{ “姓名”:“约翰”}

我需要将 JSON 替换为“John”部分,以便 .txt 文件只包含任何内容

约翰

在它里面(只是一个普通的文本,周围没有引号)。 我正在使用 WSO2 集成器。我研究了 PayloadFactory 和 Smooks 调解器,但它们只返回 JSON 或 xml。我也在查看 Enrich 调解器,但无论我如何扭曲它,它根本不会影响文本文件。

【问题讨论】:

  • 如果知道输入是{"name":"John"}那么就不需要做任何处理,直接输出“John”即可。您需要一个程序的原因可能是输入可能不同,例如{"name":"Jane"}。但是接下来的问题是,程序可能遇到的输入范围是多少?如果输入超出这个范围,程序需要做什么?
  • 阅读文件后,尝试使用表达式 json-eval($.name)。
  • @amg_amit 我确实尝试过使用 json-eval($.name) 并且它确实用“John”替换了文件的内容......问题是 - 我不需要引号名字。
  • 如果您不需要引号,则在使用表达式获取数据后尝试使用“”前后的子字符串来删除引号,如果这不可行,请尝试使用有效负载调解器跨度>

标签: json xml wso2 wso2esb transformation


【解决方案1】:

试试这个;

     <property name="name" expression="json-eval($.name)" scope="default" type="STRING"/>
     <payloadFactory media-type="xml">
        <format>
           <ms11:text xmlns:ms11="http://ws.apache.org/commons/ns/payload">$1</ms11:text>
        </format>
        <args>
           <arg evaluator="xml" expression="$ctx:name"/>
        </args>
     </payloadFactory>
     <property name="messageType" value="text/plain" scope="axis2"/>

【讨论】:

  • 谢谢你,Erandika!这完成了工作
猜你喜欢
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 2015-11-24
  • 2011-05-04
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
相关资源
最近更新 更多