1
給定一個任意的Newtonsoft.Json.Linq.JObject,如果你想將一些函數應用於所有出現在其中的字符串值(無論哪裏可能) - 無論是作爲屬性的基本值,還是應用於json,怎麼做最好的方法呢?有了json.net,是否有一個簡單的方法來操縱所有字符串字段?
給定一個任意的Newtonsoft.Json.Linq.JObject,如果你想將一些函數應用於所有出現在其中的字符串值(無論哪裏可能) - 無論是作爲屬性的基本值,還是應用於json,怎麼做最好的方法呢?有了json.net,是否有一個簡單的方法來操縱所有字符串字段?
一個簡單的方法來做到這一點是使用JContainer.DescendantsAndSelf()
找了根JObject
是字符串值的所有後代,然後更換使用JToken.Replace()
重映射的字符串值:
public static class JsonExtensions
{
public static JToken MapStringValues(this JContainer root, Func<string, string> func)
{
foreach (var value in root.DescendantsAndSelf().OfType<JValue>().Where(v => v.Type == JTokenType.String).ToList())
value.Replace((JValue)func((string)value.Value));
return root;
}
}
然後使用它像:
jObj.MapStringValues(s => "remapped " + s);
這真的很光滑 – user655489
這意味着要做到這一點 - 剛纔想出瞭如何。您的個人資料是否提供您的聯繫信息?我找不到它。 – user655489