2017-03-26 17 views
1

Meine JSON Liste sieht wie folgt aus (wobei Typ 3 ist die CommandType.Welcome):Wie ändere ich ein JSON-Objekt in einer JSON-Liste?

[ 
    { 
    "Keyword": "Hello", 
    "Type": 0, 
    "Message": "World" 
    }, 
    { 
    "Keyword": "Hi", 
    "Type": 0, 
    "Message": "There" 
    }, 
    { 
    "Keyword": "Test", 
    "Type": 0, 
    "Message": "test" 
    }, 
    { 
    "Keyword": "Greeting", 
    "Type": 3, 
    "Message": "Welcome" 
    } 
] 

Meine aktuelle Methode das richtige Objekt aus der Liste ziehen und das Objekt zu ändern, aber es die Liste nicht ändern wird Objekt. Beispiel: command.message = message, aber wenn ich die Liste serialisiere, werden die Änderungen nicht zusammengeführt.

public void SetGreetMessage(string message) 
    { 
     var leaveGreet = new LeaveGreetService(); 
     foreach (var command in leaveGreet.CommandList.Where(x => x.Type == CommandType.Welcome)) 
     { 
      command.Message = message; 
      dynamic jsonData = JsonConvert.SerializeObject(CommandList, Formatting.Indented); 

      File.WriteAllText("Commands.txt", jsonData); 
     } 
    } 

Ich habe online einige Ressourcen untersucht und die meisten in eine Zeichenfolge analysieren und sie mit der Zeichenfolge ändern. Aber ich habe mich gefragt, ob es irgendwie so geht. Ich weiß, dass ich mit dieser Methode ein neues Objekt hinzufügen kann, aber das Modifizieren scheint eine große Leistung zu sein.

Edit:

using System; 

namespace vVvBot.Model 
{ 
    public class CustomCommand 
    { 
     public string Keyword { get; set; } 
     public CommandType Type { get; set; } 
     public string Message { get; set; } 
    } 

    public enum CommandType 
    { 
     Message, 
     Faq, 
     Action, 
     Welcome, 
     Leaving 
    } 
} 

CommandList ist die Liste des Befehls Objekt aus der Datei

+2

sollten die letzten beiden Zeilen nicht außerhalb der Schleife liegen? –

+0

Was ist der Typ der Befehlsliste? Ist es die Sammlung Befehlsobjekte, Befehl eine C# -Klasse? –

+0

@HaseebAsif ​​Ich habe meine Frage bearbeitet –

Antwort

0

Ich glaube, Sie vorbei Befehlsparameter falsch und json erzeugt nicht werden. Ich habe serializeObject Parameter von CommandList zu command geändert.

public void SetGreetMessage(string message) 
    { 
     var leaveGreet = new LeaveGreetService(); 
     foreach (var command in leaveGreet.CommandList.Where(x => x.Type == CommandType.Welcome)) 
     { 
      command.Message = message; 
      dynamic jsonData = JsonConvert.SerializeObject(command, Formatting.Indented); 

      File.WriteAllText("Commands.txt", jsonData); 
     } 
    } 
Verwandte Themen