我写了一个 plpgsql 脚本,它在一个字符串中生成一个 json 对象数组,但是在我使用 to_json() 方法将一个带有该字符串的变量传递给它之后,它返回一个双引号的结果,并且每个双引号字符都被转义了。但我需要原样的字符串。
jsonResult 变量的初始内容是:
[{"key":{04949429911,"Code":"400"},"value":"20000.00"},{"key":{"InsuranceNumber":"04949429911","Code":"403"},"value":"10000.00"},...]
但是在 to_json() 之后它看起来像这样:
"[{\"key\":{04949429911,\"Code\":\"400\"},\"value\":\"20000.00\"},{\"key\":{\"InsuranceNumber\":\"04949429911\",\"Code\":\"403\"},\"value\":\"10000.00\"}...]"
这是存储在 jsonResult 中的所有内容中断的地方:
UPDATE factor_value SET params = to_json(jsonResult) WHERE id = _id;
我究竟做错了什么?
最佳答案
This answer指出简单地转换到 json
应该足够了:
UPDATE factor_value SET params = jsonResult::json WHERE id = _id;
您看到的奇怪转义可能是由于 postgresql 没有意识到您已经拥有有效的 JSON 和您的
varchar
只是转换为普通的 javascript/JSON 字符串。
关于sql - postgresql to_json() 函数转义所有双引号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26998058/