应对PSON文件



我的任务是将pson(powerShell对象符号)文件进行删除,并且正在努力使其正常工作。显然,PSON文件是Puppet使用的JSON的变体,该变体以不同的方式编码字符串 - 根据此源

我尝试仅使用标准JSON.NET DESERIALIZEOBJECT方法:

using (var r = new StreamReader(psonFilePath))
{
    string json = r.ReadToEnd();
    dynamic jsonObject = JsonConvert.DeserializeObject(json);
}

以上代码引发了例外:

"解析值时遇到意外角色: @。路径'', 第0行,位置0。"

作为标准JSON文件,一开始就不会有"@"。

PSON文件的示例如下:

@{
    shapes = @{
        'SQ4297' = @{
            shapeid = 'SQ4297'
            shapetype = 'square'
            sides = 'four'
            colour = 'purple'
        }
        'SQ6281' = @{
            shapeid = 'SQ6281'
            shapetype = 'square'
            sides = 'four'
            colour = 'orange'
        }
        'TR14' = @{
            shapeid = 'TR14'
            shapetype = 'triange'
            sides = 'three'
            colour = 'green'
        }
    }
}

上面提到的链接指出

大多数解析器将产生PSON的可用输出,如果它们是 指示将输入解释为Latin-1编码

我尝试使用JSON使用不同的编码,但无论我尝试哪种方式都会获得类似的错误。我还尝试删除"@",但随后遇到问题,因为字符串未包含在引号中,以便再次解析。

我认为这里有两种不同的含义。

  1. 与PowerShell有关的PSON,指的是PowerShell对象表示法。这是用于将PowerShell数据对象存储在文件中的格式。PSON文件的一个有用功能是,在PowerShell中执行时,它可以自身进行序列化。

    有关更多信息,请参阅此问题:在PowerShell对象符号(PSON)中保存哈希表

    您的问题中的文件是有效的PowerShell PSON文件。

  2. 另一个PSON似乎是协议JSON。" json的超高效二进制序列化格式" this,我一无所知。

相关内容

  • 没有找到相关文章

最新更新