C# 如何从Json中获取嵌套值并在文本框中显示?

C# 如何从Json中获取嵌套值并在文本框中显示?,c#,winforms,C#,Winforms,因此,我有以下JSON: { "Name": "Program", "Version": "5.5, "Packages": { "Package": [ { "Pack": "Application1", "PackName": "Application1.zip", }, { "Pack": "Application2", "PackName": "App

因此,我有以下JSON:

{
  "Name": "Program",
  "Version": "5.5,
  "Packages": 
  {
    "Package": 
     [
      {
        "Pack": "Application1",
        "PackName": "Application1.zip",
      },
      {
        "Pack": "Application2",
        "PackName": "Application2.zip",
      }
    ]
  }
}
我知道如何使用此代码获取
Name
Versions
的值:

string source = Jsontextbox.Text;
dynamic Name = JObject.Parse(source);
dynamic Version = JObject.Parse(source);
textbox1.Text = (Name.Name + Version.Version);
但我想知道如何对包值执行此操作

我希望输出在文本框中如下所示:

Pack: Applcation1 
PackName: Application1.zip

Pack: Applcation2 
PackName: Application2.zip
我更喜欢使用JSON.Net,但我对其他选项没意见

编辑:我在尝试什么:

public class Packages
    {
        public Package[] Package { get; set; }
    }
public class Package
    {
        public string Pack { get; set; }
        public string PackageName { get; set; }

    }
string source = textBox1.Text;
var result = JsonConvert.DeserializeObject<Package>(source);
textBox6.Text = result.Pack;
公共类包
{
公共包[]包{get;set;}
}
公共类包
{
公共字符串包{get;set;}
公共字符串PackageName{get;set;}
}
字符串源=textBox1.Text;
var result=JsonConvert.DeserializeObject(源);
textBox6.Text=result.Pack;
但由于某些原因,它无法使用NestedList

    class A{
    string Name{set;get};
string Version{set;get};
List<B>nestedList{set;get};
    }

class B{
string Pack{set;get};
string PackName{set;get};
}
A类{
字符串名{set;get};
字符串版本{set;get};
ListnestedList{set;get};
}
B类{
字符串包{set;get};
字符串PackName{set;get};
}
它提供强类型对象

A objA=JsonConvert.DeserializeObject(您的对象)

使用NestedList

    class A{
    string Name{set;get};
string Version{set;get};
List<B>nestedList{set;get};
    }

class B{
string Pack{set;get};
string PackName{set;get};
}
A类{
字符串名{set;get};
字符串版本{set;get};
ListnestedList{set;get};
}
B类{
字符串包{set;get};
字符串PackName{set;get};
}
它提供强类型对象

A objA=JsonConvert.DeserializeObject(您的对象)
你可能想试试这个

JObject json = JObject.Parse(source);
JObject packages = JObject.Parse(json["Packages"].ToString());
JArray packageArray = (JArray)packages["Package"];

for (var i = 0; i < packageArray.Count; i++) {
    var pack = JObject.Parse(packageArray[i].ToString())["Pack"];
    var packName = JObject.Parse(packageArray[i].ToString())["PackName"];

    Console.WriteLine(pack);
    Console.WriteLine(packName);
}
JObject json=JObject.Parse(源代码);
JObject packages=JObject.Parse(json[“packages”].ToString());
JArray packageArray=(JArray)包[“包”];
对于(var i=0;i
您可能想试试这个

JObject json = JObject.Parse(source);
JObject packages = JObject.Parse(json["Packages"].ToString());
JArray packageArray = (JArray)packages["Package"];

for (var i = 0; i < packageArray.Count; i++) {
    var pack = JObject.Parse(packageArray[i].ToString())["Pack"];
    var packName = JObject.Parse(packageArray[i].ToString())["PackName"];

    Console.WriteLine(pack);
    Console.WriteLine(packName);
}
JObject json=JObject.Parse(源代码);
JObject packages=JObject.Parse(json[“packages”].ToString());
JArray packageArray=(JArray)包[“包”];
对于(var i=0;i
根据您提供的JSON,输出应该是什么?编辑。这有帮助吗?您的JSON中有无效的逗号和缺少的双引号。请注意,修复后,可以使用
Edit=>Paste Special=>Paste JSON as classes
工具在VisualStudio中生成相应的类。然后,使用
var result=JsonConvert.DeserializeObject(源)进行反序列化
您当然应该将
RootObject
重命名为与当前对象目标更相关的对象。不过,当我重命名它时,它仍然不起作用。因为我有多组包的数据。基于您提供的JSON,输出应该是什么?编辑。这有帮助吗?您的JSON中有无效的逗号和缺少的双引号。请注意,修复后,可以使用
Edit=>Paste Special=>Paste JSON as classes
工具在VisualStudio中生成相应的类。然后,使用
var result=JsonConvert.DeserializeObject(源)进行反序列化
您当然应该将
RootObject
重命名为与当前对象目标更相关的对象。不过,当我重命名它时,它仍然不起作用。因为我有多组数据包。你能给我一个使用对象Desirizer的例子吗?由于某种原因,我无法让它工作。你能给我一个使用对象愿望器的例子吗?由于某种原因,我不能让它工作。