尝试用C#将Json解析到具有内部数组的字典中
我是C语言新手,请澄清如何解析这个JSON。我需要迭代内部数组来提取一些数据。 JSON: 例如,需要访问字典“{”p:“Get in”,“f:[],“t:“t”}” 请执行以下操作:尝试用C#将Json解析到具有内部数组的字典中,c#,arrays,json,dictionary,collections,C#,Arrays,Json,Dictionary,Collections,我是C语言新手,请澄清如何解析这个JSON。我需要迭代内部数组来提取一些数据。 JSON: 例如,需要访问字典“{”p:“Get in”,“f:[],“t:“t”}” 请执行以下操作: Dictionary<string, object> result = JsonConvert.DeserializeObject<Dictionary<string, object>>(bodyString); List<Dictionary<string, ob
Dictionary<string, object> result = JsonConvert.DeserializeObject<Dictionary<string, object>>(bodyString);
List<Dictionary<string, object>> itemsArray = result["p"] as List<Dictionary<string, object>>;
foreach(var itemInfo in itemsArray)
{
}
Dictionary result=JsonConvert.DeserializeObject(bodyString);
列表项ray=结果[“p”]作为列表;
foreach(itemsArray中的var itemInfo)
{
}
但是itemsArray是空的。如果您创建了一个适合数据的模型,那么您就不必担心字典反序列化的多个级别的问题
void Main()
{
var json = @"{
""p"":[
{
""p"":[
{
""p"":""Get in "",
""f"":[
],
""t"":""t""
},
{
""p"":""test"",
""t"":""lb"",
""id"":""Make""
}
]
}
]
}";
var data = JsonConvert.DeserializeObject<ItemCollection>(json);
}
public class ItemCollection
{
public ItemGroup[] p { get; set; }
}
public class ItemGroup
{
public Item[] p { get; set; }
}
public class Item
{
public string p { get; set; }
public string t { get; set; }
public string id { get; set; }
public string[] f { get; set; }
}
void Main()
{
var json=@”{
“p”:[
{
“p”:[
{
“p”:“进去”,
“f”:[
],
“t”:“t”
},
{
“p”:“test”,
“t”:“lb”,
“id”:“Make”
}
]
}
]
}";
var data=JsonConvert.DeserializeObject(json);
}
公共类项目集合
{
公共项目组[]p{get;set;}
}
公共类项目组
{
公共项[]p{get;set;}
}
公共类项目
{
公共字符串p{get;set;}
公共字符串t{get;set;}
公共字符串id{get;set;}
公共字符串[]f{get;set;}
}
如果反序列化为字符串到对象的字典,则对象将是JArray、Jobject或JToken。
{
var result=JsonConvert.DeserializeObject>(json)
将输出“JArray”
您可以使用JArray等,或者指定所需的完整结构:
{
var result = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string,List<Dictionary<string,object>>>>>>(json);
Console.Write((result["p"]).GetType().Name);
var itemsArray = result["p"];
var item = result["p"][0]["p"][0];
foreach(var entry in item)
Console.WriteLine(entry.Key + " = " + entry.Value);
}
{
var result=JsonConvert.DeserializeObject(json);
Console.Write((结果[“p”]).GetType().Name);
var itemsArray=结果[“p”];
风险值项目=结果[“p”][0][“p”][0];
foreach(项目中的var条目)
Console.WriteLine(entry.Key+“=”+entry.Value);
}
关于你的“结果”字典,它是否已填充?是的,它已填充数据。首先,查看字典中存在哪些键。第二,尝试以下操作:结果[“p”]是列表;这将生成布尔值,告诉你这是否真的是列表使用调试器并观察结果的真实类型[“p”]
Console.WriteLine((result["p"]).GetType().Name);
}
{
var result = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string,List<Dictionary<string,object>>>>>>(json);
Console.Write((result["p"]).GetType().Name);
var itemsArray = result["p"];
var item = result["p"][0]["p"][0];
foreach(var entry in item)
Console.WriteLine(entry.Key + " = " + entry.Value);
}