System.Text.Json 序列化多个 objects/array

System.Text.Json Serialize multiple objects/array

有人可以帮助我吗?我在序列化多个元素时遇到问题。

我得到的结果有多个根元素。

[
  {
    "TITLE": "title1",
    "Total EP": 16,
    "Current EP": 1,
    "URL": "https://www...",
  }
]
[
  {
    "TITLE": "title2",
    "Total EP": 16,
    "Current EP": 2,
     "URL": "https://www...",
  }
]
[
  {
    "TITLE": "title3",
    "Total EP": 16,
    "Current EP": 3,
    "URL": "https://www....",
  }
]

我怎样才能得到这样的结果?我不想拥有多个对象。相反,我希望它们合并到同一个对象中。

[
      {
        "TITLE": "title",
        "Total EP": 16,
        "Current EP": 1,
        "URL": "https://www...",
      },
      {
        "TITLE": "title",
        "Total EP": 16,
        "Current EP": 2,
         "URL": "https://www...",
      },
      {
        "TITLE": "title",
        "Total EP": 16,
        "Current EP": 3,
        "URL": "https://www....",
      }
]

这是我正在使用的代码

var total = root.Get("total")?.GetInt32();
var title = root.Get("title")?.GetString();
foreach (var url in root.Get("response")?.EnumerateArray()) {
    var currentEp = url.Get("number")?.GetInt32();
    var url = url.Get("url")?.GetString();
    
    var options = new JsonWriterOptions {
        Indented = true
    };

    using (var stream = new MemoryStream()) {
        using (var writer = new Utf8JsonWriter(stream, options)) {
            writer.WriteStartObject();
            writer.WriteString("TITLE", title);
            writer.WriteNumber("Total EP", total);
            writer.WriteNumber("Current EP", currentEp);
            writer.WriteString("URL", url);
            writer.WriteEndObject();
        }
        string json = Encoding.UTF8.GetString(stream.ToArray());
        Console.WriteLine(json);
    }
}

这里是json的例子。

   {
   "pagination":{
      "previous":null,
      "next":null
   },
   "total":10,
   "title": main title,
   "response":[
      {
         "url":"https.....id1", //URL have different ids
         "number":"1",
      },
        {
         "url":"https.....id2",
         "number":"2",
      },
          {
         "url":"https.....id3",
         "number":"3",
      },
          {
         "url":"https.....id4",
         "number":"4",
      },
          {
         "url":"https.....id5",
         "number":"5",
      },
   ]
}

感谢您的帮助。

试试这个代码

using (var stream = new MemoryStream())
{
    var options = new JsonWriterOptions
    {
        Indented = true
    };
    using (var writer = new Utf8JsonWriter(stream, options))
    {
        writer.WriteStartArray();
        for (int i = 0; i < 10; i++)
        {
            var currentEp = i;
            var total = i;
            var title = $"title{i}";
            var url = $"url:{i}";

            


            writer.WriteStartObject();
            writer.WriteString("TITLE", title);
            writer.WriteNumber("Total EP", total);
            writer.WriteNumber("Current EP", currentEp);
            writer.WriteString("URL", url);
            writer.WriteEndObject();

        }
        writer.WriteEndArray();
        
    }
    string json2 = Encoding.UTF8.GetString(stream.ToArray());
    Console.WriteLine(json2);
}