JSON请求修改

时间:2018-02-20 07:27:14

标签: java xquery osb jasonette

我需要修改我的JSON。我想在"[

之前移除]

当前请求:

{"marital-status":"Single","hospitalisation":"["hello", "world"]","ill-health":false,"specialist-condidtions":"["HEADACHE", "PANIC ATTACK"]","smoker":false,"health-concerns":false}

修改后的请求:

{"marital-status":"Single","hospitalisation":["hello", "world"],"ill-health":false,"specialist-condidtions":["HEADACHE", "PANIC ATTACK"],"smoker":false,"health-concerns":false}

我尝试使用翻译功能fn:translate(req,'"[','[') 但这取代了我的所有"以及[

2 个答案:

答案 0 :(得分:0)

如果您正在使用XML,为什么不使用NXSD自动转换为json。

要做到这一点,只要你有XSD对于JSON然后只使用一个nXSD组件,翻译将自动发生?

https://svgonugu.com/2015/12/27/using-translate-activity-for-xml-to-json/

答案 1 :(得分:0)

<rant> 您真的应该修复生成错位输出的Java进程,以确保它生成有效的JSON。尝试修复损坏的数据是浪费时间并且无法实现目的使用标准数据格式。当“修复”无法处理所有边缘情况时,它也可能在随机时间失败。</rant>

fn:translate()没有按预期方式工作的原因是你可能期望它更像是查找/替换完整字符串,但它是基于字符的。第二个参数中的第一个字符将替换为第三个参数中的第一个字符(如果没有相应的字符则被删除),然后是字符串中的每个后续字符。所以,fn:translate(req,'"[','[')确实意味着,“用[替换[并没有]替换双引号。

为了删除有问题的字符,您可以使用fn:replace(),它使用正则表达式模式查找内容,以及用于替换内容的字符串:

fn:replace(fn:replace(req, '"\[', "["), '"\]', "]")