C# - JSON String bearbeiten?
Ich habe folgenden String:
{
"badwords": ["string1", "string2"]
}
wie kann ich in c# nun über eine textbox und einen button neue wörter hinzufügen?
LÖSUNG
Ich habe nun am Ende folgenden Code zusammengebaut und bin auf mein gewünschtes Ergebnis gekommen.
private void button2_Click(object sender, EventArgs e)
{
string input = File.ReadAllText(filepath);
var myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<MyObject>(input);
var wordlist = myObject.badwords.ToList();
// add words from textbox
string[] words = textBox1.Text.Split(' ');
foreach (string s in words)
{
if (input.Contains(s))
{
wordlist.Remove(s);
}
else
{
MessageBox.Show("The word " + s + " does not exist");
}
}
myObject.badwords = wordlist;
var output = Newtonsoft.Json.JsonConvert.SerializeObject(myObject);
File.WriteAllText(filepath, output);
textBox1.Clear();
textBox2.Text = File.ReadAllText(filepath);
}
2 Antworten
Mit Newtonsoft.Json und SystemLinq geht das z.B.
string input = @"
{
""badwords"": [""string1"", ""string2""]
}
";
var myObject = Newtonsoft.Json.JsonConvert.DeserializeObject<MyObject>(input);
var wordlist = myObject.Badwords.ToList();
wordlist.Add("string3");
wordlist.Add("string4");
myObject.Badwords = wordlist;
var output = Newtonsoft.Json.JsonConvert.SerializeObject(myObject);
Console.WriteLine(output);
Mit diesem Object:
class MyObject
{
public IEnumerable<string> Badwords { get; set; }
}
Mit Newtonsoft.Json kannst du das Objekt parsen und modifizieren. Lies hier: https://www.newtonsoft.com/json/help/html/ModifyJson.htm.
Ansonsten könntest du dir auch ein Model-Objekt anlegen und das JSON darauf mappen.
Das Model:
class Model
{
[JsonProperty("badwords"]
public IList<string> Badwords { get; set; }
}
De-/Serialisierung:
var json = JsonConvert.SerializeObject(new Model());
var model = JsonConvert.DeserializeObject<Model>(json);
Um nun über die GUI neue Werte hinzuzufügen, würde ich bevorzugt nur das Model bearbeiten und erst dann, wenn es wirklich notwendig ist, die Konversion zu JSON vornehmen.
An der Stelle brauchst du kein spezifisches JSON-Wissen. Strings behandelst du so wie Strings.
Vorweg: Ich gehe folgend von Windows Forms aus. Die TextBox hat ein Text-Property, darüber kannst du ihren Inhalt setzen oder einholen. Dem Button ordnest du einen Event Handler für das Klickereignis zu, in diesem kannst du das eingegebene Wort aus der TextBox holen und deinem Model zufügen. Eine Konversion zu JSON würde ich erst vornehmen, sobald wirklich notwendig.
Okay und wie könnt ich dann den String der Textbox hinzufügen? Json ist für mich sehr neu