首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ConvertFrom-Json不解析整个PowerShell对象

ConvertFrom-Json不解析整个PowerShell对象
EN

Stack Overflow用户
提问于 2014-11-25 07:05:59
回答 1查看 15.3K关注 0票数 12

我在一个名为test.txt的文件中有这个JSON

代码语言:javascript
复制
{
  "local-dev": {
    "client": {
      "server-url": "http://localhost:3000"
    },
    "server": {
      "renterEndpoint": {
        "rejectUnauthorized": false,
        "host": "blah.blah.com",
        "port": 443,
        "path": "/api/renter"
      },
      "homeownerEndpoint": {
        "rejectUnauthorized": false,
        "host": "blah.blah.com",
        "port": 443,
        "path": "/api/homeowner"
      }
    }
  }
}

当我运行这个PowerShell命令时:

代码语言:javascript
复制
Get-Content "test.txt" -Raw | ConvertFrom-Json

我得到的输出不包括第二级以下的任何对象(即客户端和服务器对象没有属性)。

代码语言:javascript
复制
local-dev
---------
@{client=; server=}

有谁有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-25 08:07:37

你想要的数据就在那里。你只需要导航“节点”(不知道合适的术语)如果你把数据从你的文件返回到一个变量中并使用Get-Member,你就可以看到你正在寻找的东西。

代码语言:javascript
复制
PS C:\Users\Cameron> $json | Get-Member | Select-Object name

Name                                                                                                                                                                                              
----                                                                                                                                                                                              
Equals                                                                                                                                                                                            
GetHashCode                                                                                                                                                                                       
GetType                                                                                                                                                                                           
ToString                                                                                                                                                                                          
local-dev     

让我们看看local-dev中的内容。请注意属性周围的引号。需要PowerShell将其作为字符串处理,否则将出现解析错误。

代码语言:javascript
复制
PS C:\Users\Cameron> $json."local-dev"

client                                        server                                       
------                                        ------                                       
@{server-url=http://localhost:3000}           @{renterEndpoint=; homeownerEndpoint=}

让我们再走远一点

代码语言:javascript
复制
PS C:\Users\Cameron> $json."local-dev".server.renterEndpoint

    rejectUnauthorized host                                     port path                  
    ------------------ ----                                     ---- ----                  
                 False blah.blah.com                             443 /api/renter   

我相信还有其他方法可以提取您正在寻找的数据。我最近才开始关注这一点。要点是,如果你知道你在寻找什么,只需要使用对象的属性来获得你需要的东西。如果您不知道这些知识,Get-Member可以帮助您公开属性以显示数据结构。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27115880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档