C# 如何从Json中获取嵌套值并在文本框中显示?
因此,我有以下JSON:C# 如何从Json中获取嵌套值并在文本框中显示?,c#,winforms,C#,Winforms,因此,我有以下JSON: { "Name": "Program", "Version": "5.5, "Packages": { "Package": [ { "Pack": "Application1", "PackName": "Application1.zip", }, { "Pack": "Application2", "PackName": "App
{
"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的例子吗?由于某种原因,我无法让它工作。你能给我一个使用对象愿望器的例子吗?由于某种原因,我不能让它工作。