首页
学习
活动
专区
圈层
工具
发布

TSQL解析
EN

Stack Overflow用户
提问于 2017-03-30 01:37:14
回答 1查看 115关注 0票数 1

我的JSON数据有[.当我尝试OpenJSON时,它会抱怨。你能帮忙吗。

代码语言:javascript
复制
DECLARE @Json VARCHAR(MAX)

SET @Json = '{"[key]":"val"}'

SELECT *
FROM openjson(@json)
WITH (C1 VARCHAR(200) '$.[key]')

Msg 13607、级别16、状态4、第7行JSON路径没有正确格式化。意外字符“[”位于位置2.

EN

回答 1

Stack Overflow用户

发布于 2017-03-31 07:35:42

奥佩尼森与数组一起工作。JSON字符串{"[key]":"val"}指定一个对象。在这种情况下,您应该使用查询价值

要获得密钥的值,请使用JSON_VALUE:

代码语言:javascript
复制
select JSON_VALUE('{"[key]":"val"}','$."[key]"')

返回val

但是,您应该研究为什么属性的名称是[key]而不是key。这定义了一个名为[key]的属性,而不是key

这对每个人来说都是完全出乎意料和令人困惑的。事实上,这就是路径表达式的错误所在。这将给任何试图从这些数据生成对象的反序列化器带来问题,例如在C#或Javascript中。您不能定义一个名为[key]的属性,这意味着使用这个JSON字符串需要额外的映射工作。

无论哪个进程生成这个字符串,都应该更改以去掉括号。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43107002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档