Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 循环为列表中的每个对象添加json_C#_Json - Fatal编程技术网

C# 循环为列表中的每个对象添加json

C# 循环为列表中的每个对象添加json,c#,json,C#,Json,我正在制作一个需要导出json的工具。他需要采用以下格式: { "version" : "2", "mangas" : [ { "manga" : [ "sample", "manganame", 1234567890, 0, 0 ], "chapters" : [ { "u" : "urlexample", "r" : 1 }, { "u" : "urle

我正在制作一个需要导出json的工具。他需要采用以下格式:

    {
      "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;
    }