wie fügen Sie eine json-Datei ohne die Formatierung
Ich arbeite an einer Datei, die Sie hinzufügen/abrufen der Daten. Das Datenformat ist JSON. Ich bin ein Neuling.
Ich bin mit JSON.NET zum serialisieren und Deserialisieren der Daten.
dies ist das json-format
{ "EmpId": 1, "Name": "Kaushik", "Bezeichnung": ".net Entwickler", "JoiningDate": "09/23/2013", "Skill": [ { "Id": 1, "SkillName": "C#" }, { "Id": 2, "SkillName": "PHP" }, { "Id": 3, "SkillName": "java" } ] }
Dies ist das JSON-format, die ich arbeite .
Beschreibung Des Problems
- Ich wint Anhängen, die Datei-Daten, so kann ich hinzufügen, mehr json zu diesem , für diese brauche ich, um zu überprüfen gibt es schon einige Daten, oder nicht?
- und zweitens möchte ich anfügen der Daten in der json-Datei die angehängt form von Daten wird so Aussehen
[ { "EmpId": 1, "Name": "Kaushik", "Bezeichnung": ".net Entwickler", "JoiningDate": "09/23/2013", "Skill": [ { "Id": 1, "SkillName": "C#" }, { "Id": 2, "SkillName": "PHP" }, { "Id": 3, "SkillName": "java" } ] }, { "EmpId": 1, "Name": "Kaushik", "Bezeichnung": ".net Entwickler", "JoiningDate": "09/23/2013", "Skill": [ { "Id": 1, "SkillName": "C#" }, { "Id": 2, "SkillName": "PHP" }, { "Id": 3, "SkillName": "java" } ] } ]
Also Hauptproblem ist, dass ich nicht immer die genaue Logik Anhängen der Datei .
Bin ich beim Lesen der Datei char durch char wie folgt
int count = 0; EmployeeDetail Mitarbeiter = new EmployeeDetail { EmpId = ++count, Name = formCollection["Name"], Bezeichnung = formCollection["Bezeichnung"], JoiningDate = formCollection["JoiningDate"], Skill = Liste neu { neue Fähigkeiten(){Id = 1, SkillName = "C#"}, neue Fähigkeiten(){Id = 2, SkillName = "PHP"}, neue Fähigkeiten(){Id = 3, SkillName = "java"} } }; string json = JsonConvert.SerializeObject(Mitarbeiter,Formatierung.Eingerückt); var dataFile = Server.MapPath("~/App_Data/json_data.json"); //Lesen der Datei StreamReader reader = new StreamReader(Datei); int Tchar = 0; char ch; tun { ch = (char)reader.Lesen(); Antwort.Write(ch); Tchar++; } while (!reader.EndOfStream); reader.Close(); StreamWriter file = new StreamWriter(dataFile,append:true); Datei.WriteLine(json); Datei.Close();
also jede Hilfe ist geschätzt Danke
InformationsquelleAutor | 2013-12-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre beste und zuverlässigste Ansatz wäre, nicht Anhängen, um die Datei, aber stattdessen Lesen Sie die gesamte JSON-Datei und de-serialisieren eines Objekts Anhängen an die Objekt-Auflistung und dann serialisieren Sie die Ausgabe zurück auf die JSON-Datei.
Ich habe dieses Beispiel für Sie (ändern Sie den Pfad und die Klasse entsprechend):
Als Sie sind, neue Stimmen oder kreuzen Sie als Antwort, wenn ich Ihnen geholfen haben.
??
mark bedeutet ? und Was wird der Inhalt der Datei auf die zweite Zeit ? Es wird das array der beiden json-oder nicht ?? Ich bin nicht immer Ihrer Lösung genau??
bedeutet, wenn die DeserializeObject-Funktion gibt null zurück (also vielleicht eine Datei nicht erstellt, noch nicht, oder ist leer), dann erstellen Sie einfach eine neue Liste von EmployeeDetail. Den Inhalt der Datei auf die zweite Runde, sparen 4 Mitarbeiter. Dann 6 Mitarbeiter und so weiter... werden Sie wahrscheinlich wollen einfach nur einen Mitarbeiter hinzufügen, jedes mal, so ändere es einfach.Ich danke Ihnen so sehr
Kein problem. Gerne helfen
Ich war auf der Suche so schlecht ist.Danke!!!
InformationsquelleAutor GONeale
Es ist ein
CopyTo
Methode aufFileStream
.So brauchen Sie nicht zu Lesen char-by-char, öffnen Sie einen Datei-stream und
CopyTo
den response stream.Ich würde auch empfehlen Ihnen reserialize Sie zuerst die Datei (mit Json.NET Sie können einfach mit
dynamic
zu vermeiden, messing mit konkreten Typen), und da ist es ein array von Objekten, fügen Sie dann Ihre neue Objekt auf das array und speichern Sie es zurück.Format immer korrekt, da Sie re-speichern Sie die gesamte Datei.
P. S. Sie werden wahrscheinlich nicht in der Lage, nur Anhängen, da die serialisierten JSON-Objekt in die Datei wird "geschlossen" (Sie haben Ihre
} ]
dort), so dass mit dem anfügen von text funktioniert nicht.InformationsquelleAutor Alexey Raga