错误 DeserializeJSON() MySQL json_object
Error DeserializeJSON() MySQL json_object
我正在从 ColdFusion 9.0.1 中的 MySQL 5.7 查询中取回 JSON 字符串。这是我的查询:
SELECT (
SELECT GROUP_CONCAT(
JSON_OBJECT(
'nrtype', nrt.nrtype,
'number', nr.number
)
)
) AS nrJSON
FROM ...
返回的数据如下所示:
{"nrtype": "Phone 1", "number": "12345678"},{"nrtype": "E-Mail 1", "number": "some@email.com"}
但是当我尝试在其上使用 DeserializeJSON()
时,我收到以下错误:
JSON parsing failure at character 44:',' in {"nrtype": "Phone 1", "number": "12345678"},{"nrtype": "E-Mail 1", "number": "some@email.com"}
我有点困惑。我想要得到的是由 DeserializeJSON()
函数创建的结构。
我能做什么?
正如解析器所描述的那样,JSON 那是无效的。如果将 JSON 包裹在方括号“[”和“]”中,它将是有效的(或至少是可解析的)。他们将使它成为一个结构数组。不确定如何制作 MySQL return 这些括号内的数据?
我猜你可以使用 ColdFusion 添加括号,但我更希望源代码正确地完成它。
jsonhack = '[' & queryname.nrJSON & ']';
datarecord = DeserializeJSON(jsonhack);
writeDump(datarecord);
我用你的数据创建了一个例子,你可以在这里看到 - trycf.com gist
来自评论
解决方案确实是[将以下内容添加到 SQL 语句]:
CONTACT('[',
GROUP_CONCAT(
JSON_OBJECT(...)
),
']')
如果您有一些列已经包含 JSON 格式字符串,请尝试以下操作:
带有 JSON_MERGE() 的代码部分:
...
CONCAT(
'{"elements": [',
GROUP_CONCAT(
JSON_MERGE(
JSON_OBJECT(
'type', T2.`type`,
'data', T2.`data`
),
CONCAT('{"info": ', T2.`info`, '}')
)
),
']}'
) AS `elements`,
...
我正在从 ColdFusion 9.0.1 中的 MySQL 5.7 查询中取回 JSON 字符串。这是我的查询:
SELECT (
SELECT GROUP_CONCAT(
JSON_OBJECT(
'nrtype', nrt.nrtype,
'number', nr.number
)
)
) AS nrJSON
FROM ...
返回的数据如下所示:
{"nrtype": "Phone 1", "number": "12345678"},{"nrtype": "E-Mail 1", "number": "some@email.com"}
但是当我尝试在其上使用 DeserializeJSON()
时,我收到以下错误:
JSON parsing failure at character 44:',' in {"nrtype": "Phone 1", "number": "12345678"},{"nrtype": "E-Mail 1", "number": "some@email.com"}
我有点困惑。我想要得到的是由 DeserializeJSON()
函数创建的结构。
我能做什么?
正如解析器所描述的那样,JSON 那是无效的。如果将 JSON 包裹在方括号“[”和“]”中,它将是有效的(或至少是可解析的)。他们将使它成为一个结构数组。不确定如何制作 MySQL return 这些括号内的数据?
我猜你可以使用 ColdFusion 添加括号,但我更希望源代码正确地完成它。
jsonhack = '[' & queryname.nrJSON & ']';
datarecord = DeserializeJSON(jsonhack);
writeDump(datarecord);
我用你的数据创建了一个例子,你可以在这里看到 - trycf.com gist
来自评论
解决方案确实是[将以下内容添加到 SQL 语句]:
CONTACT('[',
GROUP_CONCAT(
JSON_OBJECT(...)
),
']')
如果您有一些列已经包含 JSON 格式字符串,请尝试以下操作:
带有 JSON_MERGE() 的代码部分:
...
CONCAT(
'{"elements": [',
GROUP_CONCAT(
JSON_MERGE(
JSON_OBJECT(
'type', T2.`type`,
'data', T2.`data`
),
CONCAT('{"info": ', T2.`info`, '}')
)
),
']}'
) AS `elements`,
...