2017-09-11 25 views

回答

3

一个简单的方法来做到这一点是使用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); 
+0

这真的很光滑 – user655489

+0

这意味着要做到这一点 - 刚才想出了如何。您的个人资料是否提供您的联系信息?我找不到它。 – user655489

相关问题