如何通过JOLT JSON转换将\"替换为\"并解析JSON字符串
解决JOLT解析转义JSON字符串的问题
问题场景
输入JSON(cpf字段为转义后的JSON字符串):
{ "cpf": "[{\"property\":\"PQR\",\"value\":\"-\"},{\"property\":\"Exclude\",\"value\":\"-\"},{\"property\":\"Test\",\"value\":null},{\"property\":\"Test\",\"value\":null},{\"property\":\"Requested\",\"value\":\"PNT\"},{\"property\":\"Flag\",\"value\":\"TR\"},{\"property\":\"Name\",\"value\":\"Some Sentense\"},{\"property\":\"Length\",\"value\":null},{\"property\":\"ID\",\"value\":\"098789\"},{\"property\":\"BUS ID\",\"value\":\"123456988433\"}]" }
期望输出(cpf转为实际JSON数组):
{ "cpf":[ { "property":"PQR", "value":"-" }, { "property":"Exclude", "value":"-" }, { "property":"Test", "value":null }, { "property":"Test", "value":null }, { "property":"Requested", "value":"PNT" }, { "property":"Flag", "value":"TR" }, { "property":"Name", "value":"Some Sentense" }, { "property":"Length", "value":null }, { "property":"ID", "value":"098789" }, { "property":"BUS ID", "value":"123456988433" } ] }
你之前尝试的JOLT规则未生效:
[ { "operation": "modify-overwrite-beta", "spec": { "cpf": "=split('\\\"',@(1,cpf))" } }, { "operation": "modify-overwrite-beta", "spec": { "*": "=join('',@(1,cpf))" } } ]
你疑惑在第二个操作中如何添加不带转义的引号完成转换,但实际上根本不需要手动处理引号。
正确的JOLT转换规则
直接用JOLT内置的jsonParse函数一步到位,规则如下:
[ { "operation": "modify-overwrite-beta", "spec": { "cpf": "=jsonParse(@(1,cpf))" } } ]
说明
你之前手动拆分转义引号再拼接的思路绕了弯路。JOLT的jsonParse函数专门负责将符合JSON格式的字符串解析为对应的JSON结构,会自动处理字符串内的转义字符,直接就能把cpf字段的转义字符串转换成期望的数组格式,完全无需手动处理引号问题。
内容的提问来源于stack exchange,提问作者Prasad S Deshpande
相关产品推荐
相关产品推荐

