我想将一个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字符串