PowerShell 如何在解析的 JSON 上添加一些内容?

2024-02-22

我想使用 PowerShell 在解析的 JSON 中添加一些内容。我的代码:

function ConvertFromJson([string]$file)
{
    [System.Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions")
    $jsoncontent = Get-Content $file
    $jsonobj = New-Object System.Web.Script.Serialization.JavaScriptSerializer
    $global:json = $jsonobj.DeserializeObject($jsoncontent)
}

My JSON:

{
  "BlockA": {
    "BlockB": {
      "name": "BlockB",
      "value": "Value_B"
    },
}

我想让BlockC像这样:

{
  "BlockA": {
    "BlockB": {
      "name": "BlockB",
      "value": "Value_B"
    },
    "BlockC": {
      "name": "BlockC",
      "value": "Value_C"
    },
}

I tried

$json.BlockA.Add("BlockC", "")

and

$json.BlockA.BlockC.Add("name", "BlockC")

但它不适用于以下错误:

没有添加方法

我尝试了所有我能做的(尝试添加方法,使用添加成员),但都失败了。

添加 : PS C:\Users\Develop7> $json.BlockA.BlockC | PS C:\Users\Develop7> $json.BlockA.BlockC |获取会员

   TypeName: System.String

Name             MemberType            Definition
----             ----------            ----------
Clone            Method                System.Object Clone()
CompareTo        Method                int CompareTo(System.Object value), int CompareTo(string strB)
Contains         Method                bool Contains(string value)
CopyTo           Method                System.Void CopyTo(int sourceIndex, char[] destination, int destinationIndex,...
EndsWith         Method                bool EndsWith(string value), bool EndsWith(string value, System.StringCompari...
Equals           Method                bool Equals(System.Object obj), bool Equals(string value), bool Equals(string...
GetEnumerator    Method                System.CharEnumerator GetEnumerator()
GetHashCode      Method                int GetHashCode()
GetType          Method                type GetType()
GetTypeCode      Method                System.TypeCode GetTypeCode()
IndexOf          Method                int IndexOf(char value), int IndexOf(char value, int startIndex), int IndexOf...
IndexOfAny       Method                int IndexOfAny(char[] anyOf), int IndexOfAny(char[] anyOf, int startIndex), i...
Insert           Method                string Insert(int startIndex, string value)
IsNormalized     Method                bool IsNormalized(), bool IsNormalized(System.Text.NormalizationForm normaliz...
LastIndexOf      Method                int LastIndexOf(char value), int LastIndexOf(char value, int startIndex), int...
LastIndexOfAny   Method                int LastIndexOfAny(char[] anyOf), int LastIndexOfAny(char[] anyOf, int startI...
Normalize        Method                string Normalize(), string Normalize(System.Text.NormalizationForm normalizat...
PadLeft          Method                string PadLeft(int totalWidth), string PadLeft(int totalWidth, char paddingChar)
PadRight         Method                string PadRight(int totalWidth), string PadRight(int totalWidth, char padding...
Remove           Method                string Remove(int startIndex, int count), string Remove(int startIndex)
Replace          Method                string Replace(char oldChar, char newChar), string Replace(string oldValue, s...
Split            Method                string[] Split(Params char[] separator), string[] Split(char[] separator, int...
StartsWith       Method                bool StartsWith(string value), bool StartsWith(string value, System.StringCom...
Substring        Method                string Substring(int startIndex), string Substring(int startIndex, int length)
ToCharArray      Method                char[] ToCharArray(), char[] ToCharArray(int startIndex, int length)
ToLower          Method                string ToLower(), string ToLower(System.Globalization.CultureInfo culture)
ToLowerInvariant Method                string ToLowerInvariant()
ToString         Method                string ToString(), string ToString(System.IFormatProvider provider)
ToUpper          Method                string ToUpper(), string ToUpper(System.Globalization.CultureInfo culture)
ToUpperInvariant Method                string ToUpperInvariant()
Trim             Method                string Trim(Params char[] trimChars), string Trim()
TrimEnd          Method                string TrimEnd(Params char[] trimChars)
TrimStart        Method                string TrimStart(Params char[] trimChars)
Chars            ParameterizedProperty char Chars(int index) {get;}
Length           Property              System.Int32 Length {get;}

如果您使用的是 PowerShell 3.0/4.0,您可以使用以下命令简化转换ConvertFrom-Json cmdlet http://technet.microsoft.com/en-us/library/hh849898(v=wps.620).aspx.

除此之外,如果您有 PS 或 .Net 对象类型,则 Add-Member cmdlet 允许您添加任意属性。下面展示了如何基于 Json 块添加属性:

$json = @"
{
  "BlockA": {
    "BlockB": {
      "name": "BlockB",
      "value": "Value_B"
    }
  }
}
"@

$blockcvalue =@"
    {
    "name":"BlockC",
    "value":"ValueC"
    }
"@

$jobj = ConvertFrom-Json -InputObject $json

$jobj.BlockA | add-member -Name "BlockC" -value (Convertfrom-Json $blockcvalue) -MemberType NoteProperty

write-host (ConvertTo-Json $jobj)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PowerShell 如何在解析的 JSON 上添加一些内容? 的相关文章

随机推荐

  • ul in ul 的正确语义

    我在写信ul inside ul制作手风琴类型的菜单 但是当我在 html 验证器中检查下面的代码时 它给了我这些错误 Element ul not allowed as child of element ul in this contex
  • 记录可以用作对象的属性吗?

    我想将记录作为对象的属性 问题是 当我更改该记录的某个字段时 该对象不知道这一更改 type TMyRecord record SomeField Integer end TMyObject class TObject private FS
  • 为什么使用 Nsurl 请求不断告诉我重命名为“init(url)”

    还尝试添加检测视频并将其下载到应用程序的功能 简而言之 这是一个基于网络的应用程序 用于下载任何类型的视频 并能够将其存储在应用程序中 import UIKit class ViewController UIViewController I
  • Qt raw 与 std::shared_ptr

    我注意到 当在 QT 中用 share ptr 替换原始指针时 我的代码不再起作用 例如 如果不是 QTreeWidgetItem vItem new QTreeWidgetItem ItemTitle I use std shared p
  • AWS IAM GetUser - 凭证的范围应使用curl和“--aws-sigv4”选项限定在有效区域

    我试图获得正确的请求来获取用户 但不能 有效的 AWS CLI aws iam get user user name user name 现在 一个平淡的curl request api addr https iam amazonaws c
  • 设置div宽度,对齐div中心,文本左对齐

    我有一个小问题 但我无法解决 我有一个 864px 宽度的内容标题 一个重复的背景图像和页脚图像 现在我有这个 div 在背景图像上 我希望它的宽度为 855px 文本左对齐但居中对齐 以便它适合背景 我曾经有过一些剩余的填充宽度 但我发现
  • 将 NSManagedObject 的实例添加到 NSManagedObjectContext 正常,更新同一实例失败

    我在 iPhone 应用程序中使用核心数据 我创建了一个简单的类Friend 它源自NS管理对象并使用以下属性 property nonatomic retain NSString name 我能够在我的上下文中添加和删除此类的实例 并且我
  • 静态库之路来自地狱的噩梦

    这就是重点 我创建了一个子项目 静态库 该库编译良好 没有错误 当我将此库包含在项目中并从项目中的该库导入标头时 该库无法编译 因为它找不到属于自身的路径 在网上学习了一系列有关如何创建静态库并将其嵌入到项目中的教程后 我不知道哪个是正确的
  • 用户未收到 Windows 10 打包飞行

    我目前正在尝试使用 Windows 10 Packaged Flight 系统来测试我们的 Windows 10 Cordova 应用程序 遵循此处找到说明 https msdn microsoft com en us windows uw
  • Apache OpenNLP:java.io.FileInputStream 无法转换为 opennlp.tools.util.InputStreamFactory

    我正在尝试使用 Apache OpenNLP 1 7 构建自定义 NER 从可用的文档来看Here https opennlp apache org documentation 1 7 0 manual opennlp html tools
  • 使用Node.js从MySQL中提取数据并显示在HTML页面上

    我试图从 MySQL 中提取数据并将其显示在我的 HTML 页面上 但是当我在浏览器上运行下面的代码时http localhost 3000 数据没有显示在我的页面上 如果有人能帮助我解决这个问题 我将不胜感激 索引 html div di
  • (私人)Android 应用程序自动更新

    我正在开发一个非公开的 Android 应用程序 即该应用程序不会在全球 Android 市场上提供 该应用程序将安装在有限数量的客户端上 例如通过使用 apk 文件 如何在此应用程序中启用自动更新功能 我看到了不同的潜在选项 我不知道这些
  • 使用远程代理转发时docker buildkit挂载ssh

    我用 sshdocker buildkit 功能 它在本地运行良好 我想在远程服务器上构建 Docker 为此我使用 A标记转发我的本地 github 密钥 例如 ssh i server pem A
  • WinForms 应用程序中的 Web 浏览器控件出现错误

    我正在尝试在 winforms 应用程序中使用网络浏览器控件 在我的应用程序中 当我尝试导航到在 IE 或 Chrome 中正常工作的位置时 我收到一个 脚本错误 窗口 指出 此页面上的脚本中发生了错误 与 错误 对象不支持此属性或方法 不
  • 通过 Ansible playbook 检查 Java 版本

    以下是我的剧本 hosts UAT gather facts false remote user xxxx become method sudo become yes become user sudo user tasks name Fet
  • Android Studio 0.2.9 无法创建新项目

    更新到最新的 0 2 9 版本后 我无法在 Android Studio 中创建新项目 我正在使用 OSX 并收到以下错误消息 3 字节 UTF 8 序列的字节 2 无效 检查日志后 我看到以下内容 2013 09 17 13 38 29
  • 门控签入始终将工作项与构建相关联

    我正在使用带有门控签入的 TFS2010 即使我已将 关联更改集和工作项 设置为 false 变更集和工作项仍与此构建相关联 这种情况仅发生在门控构建上 如果我使用其他签入触发器 手动 连续 计划 运行构建 则变更集和工作项不会与构建关联
  • Spring环境下,我在新项目中还应该使用Hystrix吗?

    看来Hystrix https github com Netflix Hystrix已接近生命周期结束 Netflix 堆栈现在已被弃用 我们正在为一个全新的项目构建一个堆栈 我们需要一个断路器 我们的默认选择是 Hystrix 因为它众所
  • 我的设备没有收到其他通知 (FCM)

    我迁移到 Firebase Cloud Messaging 当第一次尝试发送消息时 我使用 Firebase 中的控制台收到了一条通知 然后在几分钟后尝试发送另一个通知 但我不再收到另一个通知 但在我的 Firebase 控制台中 它说它是
  • PowerShell 如何在解析的 JSON 上添加一些内容?

    我想使用 PowerShell 在解析的 JSON 中添加一些内容 我的代码 function ConvertFromJson string file System Reflection Assembly LoadWithPartialNa