C# 如何将JSON数组反序列化到字典中
陷入反序列化问题,需要帮助使用数据数组转换JSON文件。我不知道如何将其反序列化到该对象的字典中 我的JSON在文件中是这种格式的-它有数千行长这只是一个示例:C# 如何将JSON数组反序列化到字典中,c#,json,C#,Json,陷入反序列化问题,需要帮助使用数据数组转换JSON文件。我不知道如何将其反序列化到该对象的字典中 我的JSON在文件中是这种格式的-它有数千行长这只是一个示例: [ { "movies": [ "A", "B", "C", "D", "E" ] }, { "movies": [ "A" ] }, { "movies": [ "C",
[
{
"movies": [
"A",
"B",
"C",
"D",
"E"
]
},
{
"movies": [
"A"
]
},
{
"movies": [
"C",
"D"
]
}
]
到目前为止,我了解JSON结构,我的C#类是
public class Rootobject
{
public Class1[] Property1 { get; set; }
}
public class Class1
{
public string[] movies { get; set; }
}
var json = "";
// MyObject o;
using (FileStream s = File.Open(@"D:\test.json", FileMode.Open))
using (StreamReader sr = new StreamReader(s))
{
json = sr.ReadToEnd();
}
var tmp = JsonConvert.DeserializeObject<Rootobject>(json);
公共类根对象
{
公共类1[]属性1{get;set;}
}
公共班级1
{
公共字符串[]电影{get;set;}
}
var json=“”;
//对象o;
使用(filestreams=File.Open(@“D:\test.json”,FileMode.Open))
使用(StreamReader sr=新StreamReader)
{
json=sr.ReadToEnd();
}
var tmp=JsonConvert.DeserializeObject(json);
无法仅使用此类获取反序列化对象
public class Class1
{
public string[] movies { get; set; }
}
你能试试吗
var tmp = JsonConvert.DeserializeObject<IEnumerable<Class1>>(json);
var tmp=JsonConvert.DeserializeObject(json);
您发布的代码的问题是,您的JSON对象实际上是一个数组(请注意它如何以[
开头,以]
结尾),但您的代码试图将其反序列化为与JSON结构不匹配的单个根对象
您需要反序列化到Class1[]
,指示它是一个数组
var tmp = JsonConvert.DeserializeObject<Class1[]>(json);
班级结构
public class Class1
{
public string key { get; set; }
public string[] movies { get; set; }
}
反序列化
[
{
"key": "keyValue1",
"movies": [
"A",
"B",
"C",
"D",
"E"
]
},
{
"key": "keyValue2",
"movies": [
"A"
]
},
{
"key": "keyValue3",
"movies": [
"C",
"D"
]
}
]
var json = "";
// MyObject o;
using (FileStream s = File.Open(@"D:\test.json", FileMode.Open))
using (StreamReader sr = new StreamReader(s))
{
json = sr.ReadToEnd();
}
var tmp = JsonConvert.DeserializeObject<Rootobject[]>(json);
// don't forget to add using System.Linq;
var dictionary = tmp.ToDictionary<string, string[]>(o => o.key, o => o.movies);
var json=”“;
//对象o;
使用(filestreams=File.Open(@“D:\test.json”,FileMode.Open))
使用(StreamReader sr=新StreamReader)
{
json=sr.ReadToEnd();
}
var tmp=JsonConvert.DeserializeObject(json);
//别忘了添加usingsystem.Linq;
var dictionary=tmp.ToDictionary(o=>o.key,o=>o.movies);
var tmp=JsonConvert.DeserializeObject(json)
-或“{”Property1:[…]}”
对于您的Json,[…]
是您向我们展示的Json感谢您的回复,您是否可以展示一些语法如何将tmp对象信息放入字典,这是一个大Json,您认为反序列化对象是最佳选择?