错误DeserializeJSON()MySQL json_object

Ber*_*aus 1 mysql coldfusion json coldfusion-9

我从ColdFusion 9.0.1中的MySQL 5.7查询中获取了一个JSON字符串.这是我的查询:

SELECT  (
        SELECT  GROUP_CONCAT(
                  JSON_OBJECT(
                    'nrtype', nrt.nrtype,
                    'number', nr.number
                    )
                )
        ) AS nrJSON
FROM    ...
Run Code Online (Sandbox Code Playgroud)

返回的数据如下所示:

{"nrtype": "Phone 1", "number": "12345678"},{"nrtype": "E-Mail 1", "number": "some@email.com"}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用DeserializeJSON()它时,我收到以下错误:

JSON parsing failure at character 44:',' in {"nrtype": "Phone 1", "number": "12345678"},{"nrtype": "E-Mail 1", "number": "some@email.com"}
Run Code Online (Sandbox Code Playgroud)

我有点困惑.我想得到的是由该DeserializeJSON()函数创建的结构.

我能做什么?

Mig*_*l-F 7

这不是解析器描述的有效JSON.如果将JSON包装在方括号'['和']'中,它将是有效的(或至少是可解析的).他们将使它成为一系列结构.不知道如何让MySQL返回这些括号内的数据?

我想你可以使用ColdFusion添加括号,但我更愿意让源代码正确执行.

jsonhack = '[' & queryname.nrJSON & ']';
datarecord = DeserializeJSON(jsonhack);
writeDump(datarecord);
Run Code Online (Sandbox Code Playgroud)

我创建了一个您可以在此处看到的数据示例 - trycf.com gist

从评论

解决方案确实是[将以下内容添加到SQL语句中]:

CONTACT('[', 
    GROUP_CONCAT(
        JSON_OBJECT(...)
    ),
']')
Run Code Online (Sandbox Code Playgroud)

  • 很高兴这对你有所帮助.我很高兴你找到了一种方法来在SQL语句中添加括号而不是从ColdFusion服务器.我会将你的评论添加到答案中,以便其他人发现这篇文章会看到它.做得好. (2认同)