我的JSON列表如下所示(其中Type 3是CommandType.Welcome):
[
{
"Keyword": "Hello",
"Type": 0,
"Message": "World"
},
{
"Keyword": "Hi",
"Type": 0,
"Message": "There"
},
{
"Keyword": "Test",
"Type": 0,
"Message": "test"
},
{
"Keyword": "Greeting",
"Type": 3,
"Message": "Welcome"
}
]
我当前的方法将从列表中提取正确的对象并修改对象,但它不会修改列表对象。例如,command.message = message但是当我序列化列表时,它并没有合并更改。
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);
}
}
我已经在线查看了一些资源,并且大多数解析为字符串并使用字符串对其进行修改。但我想知道是否有可能以某种方式这样做。我知道我可以使用这种方法为它添加一个新对象,但修改似乎是一个伟大的壮举。
编辑:
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是文件
中命令Object的列表答案 0 :(得分:0)
我认为您错误地传递了命令参数,并且没有生成json。我已将serializeObject
参数从CommandList
更改为command
。
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);
}
}