首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Powershell从Json结构中提取值时出现问题

使用Powershell从Json结构中提取值时出现问题
EN

Stack Overflow用户
提问于 2019-03-04 13:13:48
回答 1查看 742关注 0票数 2

使用Powershell,我得到了一个返回到我的第一个变量的json代码片段(这总是很好用);

# Initialise variables...
$nMessage_id = "";
$whatStatusJsonContent = "";
# Function https://abc.googleapis.com/abc/load call here and returns...
$whatStatusJsonContent = '{"message_id":9093813071099257562}'

然后,我将转换函数调用为一个临时变量,如下所示;

$ResponseBody = ConvertFrom-Json $whatStatusJsonContent;

它将Json放入一个很好的小数据结构中,如下所示;

         message_id
         ----------
9093813071099257562

我可以通过调用它来选择我想要的值;

$nMessage_id = $ResponseBody.message_id;

通常,这样做很好,我会将值放入第二个变量中;

$nMessage_id = 9093813071099257562

问题是:有时我在$nMessage_id中什么也得不到,即使$whatStatusJsonContent确实被记录为从函数中正确返回了Json。

我的问题是:我必须从第一个变量开始进行ConvertFrom-Json,还是可以直接从第一个变量开始读取?

组合解决方案:感谢@mklement()和@Bernard-Moeskops

# Initialise variables...
$nMessage_id = "";
$whatStatusJsonContent = "";
# Function https://abc.googleapis.com/abc/load call here and returns...
$whatStatusJsonContent = '{"message_id":9093813071099257562}'

$ResponseBody = ConvertFrom-Json $whatStatusJsonContent;

if($ResponseBody.message_id){
    # ConvertFrom-Json got the value!
    $nMessage_id = $ResponseBody.message_id
}else{
    # ConvertFrom-Json didn't work!
    $nMessage_id = = ($whatStatusJsonContent -split '[:}]')[1]
}
EN

回答 1

Stack Overflow用户

发布于 2019-03-04 17:00:41

您必须对其进行转换,以便PowerShell能够理解它。它将从字符串转换为PSCustomObject。只需通过询问变量之前和之后的类型来进行检查。

$ResponseBody.message_id.GetType()

如果有时输出为nothing,您可以这样做:

if($ResponseBody.message_id){
    $nMessage_id = $ResponseBody.message_id
}else{
    throw "No message id found"
}

希望这能有所帮助。

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

https://stackoverflow.com/questions/54977018

复制
相关文章

相似问题

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