2017-09-11 1 views

답변

3
이 작업을 수행하는 한 가지 간단한 방법은 루트 문자열 값입니다 JObject의 모든 자손을 찾기 위해 JContainer.DescendantsAndSelf()을 사용하는 것입니다

는, 다음 매핑 된 문자열이 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