【发布时间】:2018-04-11 19:34:49
【问题描述】:
我正在尝试为 PowerShell 使用 HJSON C# 库:https://github.com/hjson/hjson-cs 我已经成功编译了dll,将其放入文件夹并通过标准程序添加了类型:
#LOAD
$scriptRoot = Split-Path $script:psEditor.GetEditorContext().CurrentFile.Path
$FilePath = ( Get-Item .\Hjson.dll ).FullName
[System.Reflection.Assembly]::LoadFrom("$FilePath")
[Hjson.IJsonReader]::new()
[Hjson.hjson]::Load("$scriptRoot\test.hjson")
我正在尝试通过示例来了解基础知识:
读取方法:https://github.com/hjson/hjson-cs#read
# var jsonObject = HjsonValue.Load(filePath).Qo();
$jsonTempData = [Hjson.HjsonValue]::Load("$scriptRoot\test.hjson")
$jsonObject = [Hjson.JsonUtil]::Qo($jsonTempData)
$jsonObject
但输出缺少值:
PS D:\OneDrive\PS-HJSON> $jsonObject
Key Value
--- -----
hello
text
quote
otherwise
abc-123
commas
but
trailing
multiline
number
negative
yes
no
null
array
array2
PS D:\OneDrive\PS-HJSON>
所以我看不到值。为什么它不像 JSON 对象那样工作?
当我尝试遍历键时:
foreach ( $item in $jsonObject) {
$item.Key, $item.Value
}
我知道了:
在尝试枚举时发生以下异常 collection: "由于当前状态,操作无效 目的。 "
我确定我遗漏了一些东西,但我对 c# 的了解还不够,不知道该怎么做。
【问题讨论】:
-
尝试链接你的方法调用。
$jsonTempData = [Hjson.HjsonValue]::Load("$scriptRoot\test.hjson").Qo() -
它不适用于 Powershell。
-
因此,由于初始导入变量 $jsonTempData 中缺少值,问题可能出在 C# 中,或者可能在您的 Load 调用中,但我敢打赌在较低级别上。
标签: c# powershell hjson