在Powershell中使用Empy字符串键解析JSON

阴影

ConvertFrom-Json失败,并显示消息“由于“名称”的值无效,因此无法处理参数”。 "{ """": ""test""}" | ConvertFrom-Json

有比手动完成更好的方法吗?

mklement0

虽然JSON RFC确实允许空键[1] ConvertFrom-Json没有不幸的是,由于技术方面的原因:它返回类型的对象[pscustomobject],这是不允许有名称为空字符串的属性。

相比之下,PowerShell的[hashtable][System.Collections.Hashtable])类型及其同级的有序键([System.Collections.Specialized.OrderedDictionary]确实允许输入具有空字符串键值(每个实例1个)的条目。

ConvertFrom-Json不提供创建哈希表的功能,但是第三方newtonsoft.json模块可以提供。该模块是广泛使用的Microsoft推荐的 Json.NET库的包装它带有替代cmdletConvertFrom-JsonNewtonsoftConvertTo-JsonNewtonsoft

PS> '{ "": "test"}' | ConvertFrom-JsonNewtonsoft

Name                           Value
----                           -----
                               test

截至2020年10月的更新:该模块的最新更新于2019年5月,捆绑的Newtonsoft.Json.dll组件相当旧:它是version 8.0,而撰写本文时当前版本是12.0该模块的源代码可以在此处找到

输出类型为[System.Collections.Specialized.OrderedDictionary],即具有有序键的哈希表,在这种情况下,等效于以下有序哈希表文字:
[ordered] @{ '' = 'test' }

您可以使用.''使用['']空键引用该条目:

PS> $o = $'{ "": "test"}' | ConvertFrom-JsonNewtonsoft
PS> $o.'', $o['']
test
test

安装

在没有附加设置的PowerShell v5中,以及在安装PowerShell PackageManagement模块之后的v4(以及v3)中,可以从PowerShell画廊中通过提升的控制台安装模块,如下所示

Install-Module Newtonsoft.Json

或者,Install-Module -Scope CurrentUser Newtonsoft.Json仅用于当前用户安装。


[1] JSON名称(键)定义为stringmember = string name-separator value),“字符串是零个或多个Unicode字符的序列”(添加了强调)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用动态键解析JSON字符串

在字符串中使用解析的JSON填充我的tableview

在powershell中使用JSON对象构建字符串

使用powershell解析字符串

使用JSON从字符串解析数组?

使用jq解析JSON字符串

使用json解析空字符串

在解析JSON字符串的同时保留键的原始顺序

解析json字符串以查找和元素(键/值)

使用翻新功能解析动态键Json字符串

在JSON键中使用加引号的字符串有实际的理由吗?

如何选择键:JSON对象中使用的字符串格式的值对?

解析字符串并使用键,值对创建数组

当数据是字符串而不是对象时,如何在android中使用解析相同的json响应?

Json解析错误-MismatchedInputException期望在Spring Boot中使用LocalDate的数组或字符串

在 Android 中使用 3 层(对象、数组、字符串)解析 JSON

使用PowerShell无法将字符串解析为对象

如何在Java中使用分号解析字符串

从字符串解析JSON

使用 Cheshire 解析为 json - 生成字符串和解析字符串

使用 JSON 字符串键重命名 JSON 字符串到 Java 对象

为什么在PowerShell中使用逗号连接字符串?

在Powershell中使用搜索字符串编辑文件

在Powershell中使用机器密钥加密字符串?

PowerShell:在字符串中使用未声明的变量

在Powershell中使用选择字符串排除搜索模式

使用 Retrofit 和 Gson 解析具有未知键的 JSON 字符串时遇到问题

我不能使用 C++ boost property_tree 将嵌套键解析为 JSON 字符串

使用键的值从json字符串中获取值