【问题标题】:How to convert a JSON string to PSObject?如何将 JSON 字符串转换为 PSObject?
【发布时间】:2020-06-10 09:47:28
【问题描述】:

我想用 C# 编写一个 PowerShell 函数。在此过程中,我收到一个带有 JSON 内容的字符串。 我的示例 json 内容是:

string json = "{'TestNr':{'Name':'CSHARP', 'Description':'Test Descriptiopn'}}"

这个字符串应该被转换成一个 PSObject 就像ConvertFrom-Json 会做的那样。

我试图用下面的线创建一个对象。它可以工作,但需要大量手动编写脚本,尤其是当 JSON 字符串变长时。

PSObject obj = new PSObject();
obj.Properties.Add(new PSNoteProperty("Head", "Children"));

我也尝试了以下行:

obj = (PSObject)TypeDescriptor.GetConverter(typeof(PSObject)).ConvertFromString(json);

为此,我得到了 错误(我在 PowerShell 7 中运行该函数):

TypeConverter 无法从 System.String 转换。

【问题讨论】:

  • var jobj = JObject.Parse(json); 会将其转换为 JObject。我不会尝试将 powershell 引入 C# 并开始研究 C# 为您提供“序列化”和“反序列化”json 对象/字符串的方法和进程

标签: c# json psobject


【解决方案1】:

有两种方法可以在 C# 中解析字符串,这将是最容易使用的。

public class MyClass
{
    public TestNRClass TestNR { get; set; }
}

public class TestNRClass
{
    public string Name { get; set; }
    public string Description { get; set; }
}

// In the main,
string json = @"{""TestNr"":{""Name"":""CSHARP"", ""Description"":""Test Descriptiopn""}}";

MyClass jobj = JsonConvert.DeserializeObject<MyClass>(json);
Console.WriteLine(jobj.TestNR.Name);

这与强类型类对象有关。这就是您应该在 C# 中使用的内容。

另一种方法是获取一个对象

string json = @"{""TestNr"":{""Name"":""CSHARP"", ""Description"":""Test Descriptiopn""}}";

JObject obj = JObject.Parse(json);
Console.WriteLine(obj.ToString());
Console.WriteLine(obj["TestNr"]["Name"].ToString());

// You can also add more keyValuePair
obj["NewVariable"] = "stest";
Console.WriteLine(obj.ToString()); // Shows the new item as well.

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2016-12-06
    相关资源
    最近更新 更多