[英]How to deserialize a json file with multidimensional array to convert it to object in c#
我有以下Json文件
[
{
"photos": [
{
"photo": "http://example.com/media/origin/11820846/photo_80_4_.jpg",
"photo_order": 1,
"caption": "photo_80_4_"
}
],
"id": "11820846"
}
],
[
{
"photos": [
{
"photo": "http://example.com/media/new_images/
bookingpal/united%20arab%20emirates/
12564676/product65093-015.jpg",
"photo_order": 1,
"caption": ""
}
],
"id": "12564676"
}
]
原始文件较长,但基本上会重复。
通过以下代码,我可以看到第一个数组的数据,但是当它到达第二个数组时会失败。
为什么?
class Program {
static void Main(string[] args) {
using (var st = new StreamReader(@"C:\Users\mc\Desktop\photojson.txt")) {
string Json = st.ReadToEnd();
List<TVID> IdList = JsonConvert.DeserializeObject<List<TVID>>(Json);
foreach (var ids in IdList) {
Console.WriteLine(ids.ID);
foreach (var myphoto in ids.photos) {
Console.WriteLine(myphoto.Photo + "," + myphoto.Photo_order + "," +
myphoto.Caption);
Console.Read();
}
}
}
}
public class TVPhotos {
public string Photo { get; set; }
public string Photo_order { get; set; }
public string Caption { get; set; }
}
public class TVID {
public string ID { get; set; }
public List<TVPhotos> photos { get; set; }
}
}
要解决您在注释中提到的错误(“读取JSON内容后遇到其他文本”),您需要将JSON括在方括号中,如下所示:
[
[
{
"photos": [
{
"photo": "http://example.com/media/origin/11820846/photo_80_4_.jpg",
"photo_order": 1,
"caption": "photo_80_4_"
}
],
"id": "11820846"
}
],
[
{
"photos": [
{
"photo": "http://example.com/media/new_images/bookingpal/united%20arab%20emirates/12564676/product65093-015.jpg",
"photo_order": 1,
"caption": ""
}
],
"id": "12564676"
}
]
]
要反序列化,可以使用List <List <TVID>>,例如:
using (var st = new StreamReader(@"sample1.json"))
{
string Json = st.ReadToEnd();
List<List<TVID>> IdListList = JsonConvert.DeserializeObject<List<List<TVID>>>(Json);
foreach (var IdList in IdListList)
{
foreach (var ids in IdList)
{
Console.WriteLine(ids.ID);
foreach (var myphoto in ids.photos)
{
Console.WriteLine(myphoto.Photo + "," + myphoto.Photo_order + "," +
myphoto.Caption);
Console.Read();
}
}
}
}
查看JSON,我认为单个数组可以完成相同的工作,但是如果您不能更改JSON,则上述更改应该可以使其工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.