PowerShell 学习笔记:操作JSON文件

JSON文件(字符串)是有一定格式要求的文本文件。

百度百科
JSON JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript (European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
一、JSON样例文件

文件位于:xxx\Delphi_Project.json

{
    "Version": "1.0.0.0",
    "MainIcon": "C:\\Users\\Sen\\myIcon.png",
    "PlatForm": "VCL"
}
二、创建PowerShell操作JSON的文件

文件位于:xxx\PowerShell_JSON.ps1

    • 读取JSON文件
  1. 分步读取JSON文件

#1. 定义需要读取的json文件
$Path = ‘Delphi_Project.json’ 
    # Write-Host 'json文件: ' + $Path -ForegroundColor Green #将内容再控制台打印出来
#2. 获取json文件内容
$json_file = Get-Content  -Raw -Path $Path
#3. 将json文件内容读取出来,拼接成一个字符串
$json_str = ''
foreach($line in $json_file)
{
    $json_str = $json_str + $line
    # Write-Host $line -ForegroundColor Green  #将内容再控制台打印出来
}
#4. 将json_str 转换成PowerShell的对象
$json_data = ConvertFrom-Json $json_str 
#5. 使用PowerShell对象获取josn对象的值
$json_data.Version
$json_data.MainIcon
$json_data.PlatForm
  1. 集成(简化)读取JSON文件

$Path = ‘Delphi_Project.json’  #文件名称
$json_data = Get-Content  -Raw -Path $Path | ConvertFrom-Json
$json_data.Version
$json_data.MainIcon
$json_data.PlatForm 
  1. 以上代码执行结果

1.0.0.0
C:\Users\Sen\myIcon.png
VCL

    • 修改写入JSON文件
# 首先可以随意修改JSON 上面读取到对象
#1. 修改已经存在的值
$json_data.PlatForm = 'FMX'
#2. 增加一个新字段ID,首先判断字段是否存在,如果已经存在,然后还增加就会出现错误
if(!$json_data.psobject.properties.match('ID').Count){
   # 如果不存在就增加
   $json_data | Add-Member -MemberType NoteProperty -Name ID -Value 'sensor'
}else{
   # 如果存在就可以进行修改 
   $json_data.ID = 'wu'
}
#3. 删除一个字段
$json_data.psobject.properties.remove('ID')

#1. 将PowerShell的对象转换成JSON字符串
$json_str = ConvertTo-Json  -Depth 10 $json_data
#2. 将修改后的json字符串回写到文件中,这里当然可以更换为其他的文件名称
Set-Content -Path "$path" -Value $json_str

# 以上两句的管道渐简便写法
# $json_data | ConvertTo-Json -depth 10 | Set-Content -Path $Path
三、总结
  1. PowerShell将JSON转换成了 PSCustomObject 对象,关于 PSCustomObject 对象参见

  1. PSCustomObject 对象操作有其自己规范,字段名不能重名,所以新增加字段必须先判断是否存在

  1. 如果给一个不存在的字段直接赋值也会引发错误,所以除非明确存在,否则也需要判断是否存在

本文参考文档:

今天是2023年大年初五,祝愿大家新的一年事业有成,学业进步,开心喜乐!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海纳老吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值