CSharp · Console
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Collections.Generic;
using System.Linq;
public class Program
{
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())
{
if (value == root)
{
root = JToken.FromObject(newValue);
}
else
{
value.Replace(JToken.FromObject(newValue));
}
}
return (JObject)root;
}
public static string ReplacePath<T>(string jsonString, string path, T newValue)
{
return JToken.Parse(jsonString).ReplacePath(path, newValue).ToString();
}
}