SQL Server MSSQL 2017中JSON_VALUE中的特殊字符

fjnneemd  于 2023-01-08  发布在  其他
关注(0)|答案(1)|浏览(209)

我想从一个列的JSON中提取一个元素。
但是,我感兴趣的元素的键包含%(确切名称为:Use%)。
this之后,我尝试使用双引号,但是,我仍然有同样的问题:

JSON_VALUE(results, '$."Use%"') as value

JSON文本的格式不正确。在位置1处发现意外字符"""。

JSON_VALUE(results, '$.Use%') as value

JSON路径的格式不正确。在位置5处发现意外字符" %"。
如何从json字符串中提取值?
JSON如下所示:

{'Filesystem': 'hdfs://nameservice1', 'Size': '67945349394432', 'Used': '22662944968704', 'Available': '41812184838144', 'Use%': '33%'}
3pvhb19x

3pvhb19x1#

问题不在于尝试,而在于JSON;它不是有效的JSON。JSON使用双引号(")来分隔标识非单引号(')。对于我们的示例,只需将单引号与双引号REPLACE组合即可解决问题:

DECLARE @YourJSON nvarchar(MAX) = N'{''Filesystem'': ''hdfs://nameservice1'', ''Size'': ''67945349394432'', ''Used'': ''22662944968704'', ''Available'': ''41812184838144'', ''Use%'': ''33%''}';

SELECT JSON_VALUE(REPLACE(@YourJSON, '''', '"'), '$."Use%"') AS value;

当然,我强烈建议您研究一下如何创建使用单引号而不是双引号的JSON,并修复现有数据和创建它的流程。

相关问题