我的JSON数据有[.当我尝试OpenJSON时,它会抱怨。你能帮忙吗。
DECLARE @Json VARCHAR(MAX)
SET @Json = '{"[key]":"val"}'
SELECT *
FROM openjson(@json)
WITH (C1 VARCHAR(200) '$.[key]')Msg 13607、级别16、状态4、第7行JSON路径没有正确格式化。意外字符“[”位于位置2.
发布于 2017-03-31 07:35:42
奥佩尼森与数组一起工作。JSON字符串{"[key]":"val"}指定一个对象。在这种情况下,您应该使用查询或价值。
要获得密钥的值,请使用JSON_VALUE:
select JSON_VALUE('{"[key]":"val"}','$."[key]"')返回val。
但是,您应该研究为什么属性的名称是[key]而不是key。这定义了一个名为[key]的属性,而不是key。
这对每个人来说都是完全出乎意料和令人困惑的。事实上,这就是路径表达式的错误所在。这将给任何试图从这些数据生成对象的反序列化器带来问题,例如在C#或Javascript中。您不能定义一个名为[key]的属性,这意味着使用这个JSON字符串需要额外的映射工作。
无论哪个进程生成这个字符串,都应该更改以去掉括号。
https://stackoverflow.com/questions/43107002
复制相似问题