【发布时间】:2017-07-21 15:07:27
【问题描述】:
根据 HTTP_USER_AGENT,我必须向客户端返回一个非常专业的 json 结构格式版本。
json 对象像往常一样使用标准 postgres 函数生成。 让我们假设生成的 json 看起来像这样:
{
"return_code" : 0,
"payload" : {
"name" : "smith",
"age": 17,
"address" :{
"street" : "<whatever>",
"city" : "<anycity>"
}
}
}
现在在某些情况下,我必须以以下格式返回这个 json:
{
"return_code" : 0,
"payload" : "{"name" : "smith", "age": 17, "address" :"{"street" : "<whatever>", "city" : "<anycity>"}"}"
}
如您所见,嵌套的有效负载对象应作为字符串返回 - 此处忽略掩码以提高可读性。
此外,地址属性也应该作为字符串返回,而不是作为 json 对象。
我应该这样做的 postgres 代码很简单:
response := jsonb_set(response, '{payload}', to_jsonb((response->'payload')::text));
但是上面代码的结果是这样的:
{
"return_code" : 0,
"payload" : "{"name" : "smith", "age": 17, "address" :{"street" : "<whatever>", "city" : "<anycity>"}}"
}
考虑地址对象缺少引号(只有两个)。 我该如何解决这个问题?
谢谢!
【问题讨论】:
标签: json postgresql