using Newtonsoft.Json.Linq;
using System.Collections.Generic;
public static void Main()
var jsonString = "{\"foo\": [{ \"abc\": \"bar\",\"xyua\": 7},{\"lkkj\": true},{\"babnd\": \"jhjkas\",\"ihdo\": 109,\"daers\": true}],\"ewq\": 7,\"inh\": null,\"bhj\": true,\"test\": null,\"booltest\": false}";
var jsonObj = JObject.Parse(jsonString);
var resultJsonObj = JsonExtensions.ReplacePath(jsonObj, "$.foo[0].abc", "*********");
resultJsonObj = JsonExtensions.ReplacePath(resultJsonObj, "$.foo[2].babnd", true);
resultJsonObj = JsonExtensions.ReplacePath(resultJsonObj, "$.ewq", 8008);
var outputResult = resultJsonObj.ToString(Formatting.None);
Console.WriteLine(outputResult);
static class JsonExtensions
public static JObject ReplacePath<T>(this JToken root, string path, T newValue)
if (root == null || path == null)
throw new ArgumentNullException();
foreach (var value in root.SelectTokens(path).ToList())
root = JToken.FromObject(newValue);
value.Replace(JToken.FromObject(newValue));
public static string ReplacePath<T>(string jsonString, string path, T newValue)
return JToken.Parse(jsonString).ReplacePath(path, newValue).ToString();