C# 循环为列表中的每个对象添加json
我正在制作一个需要导出json的工具。他需要采用以下格式:C# 循环为列表中的每个对象添加json,c#,json,C#,Json,我正在制作一个需要导出json的工具。他需要采用以下格式: { "version" : "2", "mangas" : [ { "manga" : [ "sample", "manganame", 1234567890, 0, 0 ], "chapters" : [ { "u" : "urlexample", "r" : 1 }, { "u" : "urle
{
"version" : "2",
"mangas" : [ {
"manga" : [ "sample", "manganame", 1234567890, 0, 0 ],
"chapters" : [ {
"u" : "urlexample",
"r" : 1
}, {
"u" : "urlexample",
"r" : 1
}, {
"u" : "urlexample",
"r" : 1
} ]
} ]
}
这是我的代码:
void createJson(String manganame, String mangaoid, String sourceid)
{
String[] mangainfo = { "/manga/" + mangaoid, manganame, sourceid, "0", "0" };
var root = new RootObject()
{
version = "2",
mangas = new List<Manga>()
{
new Manga()
{
manga = mangainfo,
chapters = new List<Chapter>()
{
new Chapter
{
u = "sample",
r = 1
}
}
}
}
};
var json = JsonConvert.SerializeObject(root);
File.WriteAllText(@"D:\path.txt", json);
Console.WriteLine(json);
}
根据您的评论,如果您想为每个“漫画”编写不同的章节,您必须更改您的数据结构,从而更改您想要的结果。 也许是这样的
public partial class Root
{
public long Version { get; set; }
public Mangas[] Mangas { get; set; }
}
public partial class Mangas
{
public Manga[] Manga { get; set; }
}
public partial class Chapter
{
public string U { get; set; }
public long R { get; set; }
}
public partial struct Manga
{
public long? Integer;
public string String;
public Chapter[] Chapters { get; set; }
}
下面是我从给定的JSON示例生成的类
public class Chapter
{
[JsonProperty("u")]
public string U { get; set; }
[JsonProperty("r")]
public int R { get; set; }
}
public class Manga
{
[JsonProperty("manga")]
public IList<object> MangaInfos { get; set; }
[JsonProperty("chapters")]
public IList<Chapter> Chapters { get; set; }
}
public class Example
{
[JsonProperty("version")]
public string Version { get; set; }
[JsonProperty("mangas")]
public IList<Manga> Mangas { get; set; }
}
var d = new Example
{
Version = "2",
Mangas = new List<Manga>
{
new Manga()
{
MangaInfos = new List<object>{ "sample", "manganame", 1234567890, 0, 0 },
Chapters = new List<Chapter>
{
new Chapter()
{
U = "urlexample",
R = 1,
},
new Chapter()
{
U = "urlexample",
R = 1,
},
new Chapter()
{
U = "urlexample",
R = 1,
},
},
},
},
};
var json = JsonConvert.SerializeObject(d,Formatting.Indented);
Console.WriteLine(json);
并在上进行实时查看,反复浏览各个章节。解决方案如下
class Parent
{
public int Version { get; set; }
public List<Manga> mangas { get; set; }
}
class Manga
{
public List<object> manga { get; set; }
public List<Chapter> chapters { get; set; }
}
class Chapter
{
public string u { get; set; }
public int r { get; set; }
}
void createJson(String manganame, string mId, String mangaoid, long sourceid)
{
var json = new Parent()
{
Version = 2,
mangas = new List<Manga>()
{
new Manga()
{
manga = new List<object>{ "/manga/"+mangaoid, manganame, sourceid, 0, 0 },
chapters = Chapters(),
}
}
};
var sjson = JsonConvert.SerializeObject(json, Formatting.Indented);
File.WriteAllText(@"C:\Users\Izurii\Desktop\oi.json", sjson);
}
List<Chapter> Chapters()
{
List<Chapter> chapters = new List<Chapter>();
for(int i = 0; i < links.Count; i ++)
{
chapters.Add(
new Chapter()
{
u = links[i],
r = 1,
});
}
return chapters;
}
类父类
{
公共int版本{get;set;}
公共列表漫画{get;set;}
}
班级漫画
{
公共列表漫画{get;set;}
公共列表章节{get;set;}
}
班级章节
{
公共字符串u{get;set;}
公共int r{get;set;}
}
void createJson(字符串manganame、字符串mId、字符串mangaoid、长sourceid)
{
var json=new Parent()
{
版本=2,
mangas=新列表()
{
新漫画()
{
manga=新列表{“/manga/”+mangaoid,manganame,sourceid,0,0},
章=章(),
}
}
};
var sjson=JsonConvert.serialized对象(json,Formatting.Indented);
writealText(@“C:\Users\izuri\Desktop\oi.json”,sjson);
}
列出第()章
{
列表章节=新列表();
for(int i=0;i
My bad,已更正。mangainfo需要是一个包含2个字符串和3个intOkay的对象[]。除此之外,我的代码实际上生成了一些json。我将在另外五个上下文中,生成的json需要包含漫画名称、源id等。。。这很有效。现在我的问题是,json需要包含发布的章节,在这一部分中,考虑到“新章节{u=”“,r=1}”,每个章节都会向json添加一章。问题就在这里,章节列表是一个列表,每个漫画都有不同的章节。所以我在想,如果我有办法“每一章”,代码会给出一个“新的章节…”是的。这几乎就是所需要的输出。现在有一个问题,就是“newchapter(){U=“urlexample”,R=1,}”部分,您需要重复该部分以添加另一个章节。我们有办法让它循环(foreach,for…?)?。例如,一本漫画有700章,假设我们有3本“漫画”,每本300章,你就不想写。让我们思考一下,如果我有一个包含所有章节url的列表,我如何在不手动键入的情况下为每个章节创建“newchapter(){U=“urlexample”,R=1,}”。谢谢你的回复。我不知道你的名单是什么样子的。我如何向你展示如何用你的列表构建这个我不知道?非常抱歉。我的错误。我已经编辑了这篇文章,如果你想做其他事情,就说出来。好吧,这是一个字符串列表,但是我们如何获得我们需要的信息来填充章节列表呢?是的。我从sqlite数据库中检索信息,我只是编辑了发布的代码。
var d = new Example
{
Version = "2",
Mangas = new List<Manga>
{
new Manga()
{
MangaInfos = new List<object>{ "sample", "manganame", 1234567890, 0, 0 },
Chapters = new List<Chapter>
{
new Chapter()
{
U = "urlexample",
R = 1,
},
new Chapter()
{
U = "urlexample",
R = 1,
},
new Chapter()
{
U = "urlexample",
R = 1,
},
},
},
},
};
var json = JsonConvert.SerializeObject(d,Formatting.Indented);
Console.WriteLine(json);
{
"version": "2",
"mangas": [
{
"manga": [
"sample",
"manganame",
1234567890,
0,
0
],
"chapters": [
{
"u": "urlexample",
"r": 1
},
{
"u": "urlexample",
"r": 1
},
{
"u": "urlexample",
"r": 1
}
]
}
]
}
class Parent
{
public int Version { get; set; }
public List<Manga> mangas { get; set; }
}
class Manga
{
public List<object> manga { get; set; }
public List<Chapter> chapters { get; set; }
}
class Chapter
{
public string u { get; set; }
public int r { get; set; }
}
void createJson(String manganame, string mId, String mangaoid, long sourceid)
{
var json = new Parent()
{
Version = 2,
mangas = new List<Manga>()
{
new Manga()
{
manga = new List<object>{ "/manga/"+mangaoid, manganame, sourceid, 0, 0 },
chapters = Chapters(),
}
}
};
var sjson = JsonConvert.SerializeObject(json, Formatting.Indented);
File.WriteAllText(@"C:\Users\Izurii\Desktop\oi.json", sjson);
}
List<Chapter> Chapters()
{
List<Chapter> chapters = new List<Chapter>();
for(int i = 0; i < links.Count; i ++)
{
chapters.Add(
new Chapter()
{
u = links[i],
r = 1,
});
}
return chapters;
}