Ich versuche, eine Protokolldatei im JSON-Format aus einer Liste zu erstellen. Meine Klasse für Liste ist

public class ChunkItem
    {
        public int start { get; set; }
        public int end { get; set; }
    }
 public class DownloadItem
    {
        public int id { get; set; }
        public string fname { get; set; }
        public string downloadPath { get; set; }
        public int chunkCount { get; set; }
        public ChunkItem[] chunks { get; set; }
        public DownloadItem(int _id, string _fname, string _downloadPath, int _chunkCount, ChunkItem[] _chunks)
        {
            id = _id;
            fname = _fname;
            downloadPath = _downloadPath;
            chunkCount = _chunkCount;
            chunks = _chunks;
        }

    }

Das Erstellen einer JSON-Datei aus dieser Klasse funktioniert einwandfrei

ChunkItem[] chunks = new ChunkItem[2];
chunks[0] = new ChunkItem();
chunks[0].start = 0;
chunks[0].end = 0;
chunks[1] = new ChunkItem();
chunks[1].start = 0;
chunks[1].end = 0;
List<DownloadItem> lst = new List<DownloadItem>();
lst.Add(new DownloadItem(0, "", "", 2, chunks));
lst.Add(new DownloadItem(1, "aaa", "sss", 2, chunks));
lst.Add(new DownloadItem(2, "bbb", "ddd", 2, chunks));
string json = JsonConvert.SerializeObject(lst);
System.IO.File.WriteAllText(logPath, json);

Ich möchte die Datei in derselben Klassenliste lesen und einige Aktualisierungen vornehmen oder neue Zeilen hinzufügen Ich kann die Datei in eine Zeichenfolge einlesen, aber keine neue Liste erstellen Wie kann ich einen String (JSON-Datei lesen) in List<DownloadItem> new list konvertieren?

0
eomer 7 Feb. 2020 im 17:35

3 Antworten

Beste Antwort

Sie müssen alle Inhalte aus der Datei lesen und den json deserialisieren Zeichenfolge zu List<DownloadItem>

var jsonData = File.ReadAllText(filePath)
var list = JsonConvert.DeserializeObject<List<DownloadItem>>(jsonData);
1
Anu Viswan 7 Feb. 2020 im 14:40

Ich verwende Newtonsoft, wo das Erstellen und Füllen der Instanzen einfach ist

var result = Newtonsoft.Json.JsonConvert.DeserializeObject<MyClass>(jsonString);
0
Sajid 7 Feb. 2020 im 15:53

In Clas DownloadItem fehlt ein standardmäßiger parameterloser Konstruktor.

0
Alexander Powolozki 7 Feb. 2020 im 14:43