我想将一个json字符串中的某个字段值修改,然后重新转成新的json字符串。
初始的json字符串如下:
{
deviceKey = "gateway dk",
cmd = "actionCall",
service = new[] {
new {
siid = 101,
action = new {
iid = 2,
inputData = new[] {
new {
index = 1,
value = "000123456789",
descreption = "sta mac"
},
new {
index = 2,
value = "shell var 0",
descreption = ""
}
}
}
}
},
transactionId = ""
}
可以使用Newtonsoft.Json
库,然后通过JToken
来实现
try
{
JToken jToken = JToken.Parse(TbMsgToSend);
var valueToken = jToken.SelectToken("service[0].action.inputData[0].value");
var descToken = jToken.SelectToken("service[0].action.inputData[0].descreption");
if (valueToken != null && descToken.ToString().Equals("sta mac"))
{
valueToken.Replace(_tbMqttDeviceDK);
}
TbMsgToSend = jToken.ToString();
}
catch (Exception ex)
{
Tools.AppendLog(LogType.Type.Recv, $"自动修改mqtt报文中的sta mac值失败。原因:{ex.Message}");
Tools.addMesIntoMessageQueue("自动修改mqtt报文中的sta mac值失败");
}
TbMsgToSend
是原来的json字符串