使用powershell处理JSON文件(深度)

时间:2018-03-01 06:36:21

标签: json powershell

我想循环访问JSON文件并使用每个parentitem,我想将子项目写入SQL查询。 查询工作正常,但我不知道如何在parentitem中输入子项。

我的JSON文件看起来像这样

{
  "cp9385930" : {
    "macAddress" : "djxnkd",
    "productName" : "cp9385930",
    "serialNumber" : "cndndj"
  },
  "cp93875" : {
    "macAddress" : "dnnf",
    "productName" : "cp93875",
    "serialNumber" : "ndnd"
  },
  "cp94774" : {
    "macAddress" : "dncnd",
    "productName" : "cp94774",
    "serialNumber" : "xjxjr"
  },
  "jfiskn" : {
    "macAddress" : "cnfnd",
    "productName" : "jfiskn",
    "serialNumber" : "xhfn"
  },
  "zb9485" : {
    "macAddress" : "cndkkdc",
    "productName" : "zb9485",
    "serialNumber" : "dfsa3"
  }
}

我试过

$json = Get-Content -path c:\export.json | Out-String | ConvertFrom-Json

我无法在parentitem中输入信息 - 深度1(?)。 我已经搜索了一段时间,但无法解决我的问题。 Scripting-Guy无法帮助我。

输出:

cp9385930 : @{macAddress=djxnkd; productName=cp9385930; serialNumber=cndndj}
cp93875   : @{macAddress=dnnf; productName=cp93875; serialNumber=ndnd}
cp94774   : @{macAddress=dncnd; productName=cp94774; serialNumber=xjxjr}
jfiskn    : @{macAddress=cnfnd; productName=jfiskn; serialNumber=xhfn}
zb9485    : @{macAddress=cndkkdc; productName=zb9485; serialNumber=}

$json.cp9385930 - >和我可以输入的其他parentitemnames,但我不知道如何循环并将其发送到查询。

我认为它很容易处理。请给我一个提示:)

1 个答案:

答案 0 :(得分:0)

并没有真正解决问题,但它解决了我的问题。

$request = get-Content -Path C:\export1.json | out-string | convertfrom-json
$request1 = $request | Get-member -MemberType NoteProperty | Select Name

我通过选择名称请求所有姓名 输出:

cp9385930 
cp93875   
cp94774   
jfiskn  

变量拥有名称之后我继续

ForEach($item in $request1){

$request.($item.Name).serialNumber
$request.($item.Name).productName
$request.($item.Name).macAddress

}

不是最聪明的方法,但我可以在不更改数据库中的json结构的情况下查询json

谢谢你的帮助! 保罗