it-swarm.com.de

json fügt der vorhandenen json-Datei C # ein neues Objekt hinzu

Ich versuche, das Hinzufügen neuer Objekte zu einer vorhandenen Json-Datei zu automatisieren. Ich habe mich im Web umgesehen, aber nur Daten und anderes hinzugefügt, aber kein ganzes Objekt. So sieht die Datei aus, die ich bearbeiten möchte:

[
    {"id":"123","name":"carl"}
]

und ich möchte zu

[
     {"id":"123","name":"carl"},
     {"id":"1234","name":"carl2"}
]

Vielen Dank für all Ihre Antworten, aber ich glaube nicht, dass jeder vollständig versteht, was ich meine, ich habe einige Antworten ausprobiert, aber dann bekomme ich Folgendes:

[
    "{\"id\":\"123\",\"name\":\"carl\"}"
]"{\"id\":\"1234\",\"name\":\"carl2\"}"

und ich möchte alles zwischen den [].

4
Joris van Roy

Wenn Sie json.NET verwenden, können Sie den Json einfach deserialisieren und serialisieren.

var list = JsonConvert.DeserializeObject<List<Person>>(myJsonString);
list.Add(new Person(1234,"carl2");
var convertedJson = JsonConvert.SerializeObject(list, Formatting.Indented);
12

Json.Net verwenden

//load from file
var initialJson = "[{\"id\":\"123\",\"name\":\"carl\"}]";

var array = JArray.Parse(initialJson);

var itemToAdd = new JObject();
itemToAdd["id"] = 1234;
itemToAdd["name"] = "carl2";
array.Add(itemToAdd);

var jsonToOutput = JsonConvert.SerializeObject(array, Formatting.Indented);

//save to file here

Die Verwendung dieser Methode erfordert keine stark typisierten Objekte

Sie könnten dieses Bit ersetzen:

//load from file
var initialJson = "[{\"id\":\"123\",\"name\":\"carl\"}]";

Mit

var initialJson = File.ReadAllText(@"c:\myjson.json")

So laden Sie den Json aus einer Textdatei

6
Alex

Sie könnten eine Methode erstellen:

public string AddObjectsToJson<T>(string json, List<T> objects)
{
    List<T> list = JsonConvert.DeserializeObject<List<T>>(json);
    list.Add(objects);
    return JsonConvert.SerializeObject(list);
}

Dann benutze es so:

string baseJson = "[{\"id\":\"123\",\"name\":\"carl\"}]";
List<Person> personsToAdd = new List<Person>() { new Person(1234,"carl2") };

string updatedJson = AddObjectsToJson(baseJson, personsToAdd);
1
Arthur Rey