2017-10-10 2 views
0

문자열 JSON 데이터를 최소화하기 위해 regex를 사용하여 다음 JSON 예제에서 불필요한 값을 모두 찾는 방법은 무엇입니까?정규식으로 JSON에서 불필요한 값을 모두 제거하려면 어떻게해야합니까?

불필요한 값 조건 :

  • = 어떠한 = 0
  • = 어떠한 = 0.0
  • = 어떠한 = "000 0-00-00 "
  • = 어떠한 값 =" "(빈 문자열)
  • = 어떠한 값 = [(빈 배열)
  • 어떠한 = = {} (빈 객체)
  • = 키는 "ID"및 끝나는 = 값의 모든 문자가 0 (" 000 "또는"00000 "또는"0 : A_ "위)

    내 작업")

JSON 예는

{ "a_3":0, "a_1":"", "a_4":0.0, "a_2":"0000-00-00", "a_5":[], "a_6":{}, "a_7ID":"0000000000","b_12ID":"0000000001", "a_8ID":"000000","b_1":0.1,"b_2":2, "b_3":1.0, "b_4":"0", "b_5":"sf" } 

(I로 시작하는 불필요한 키 이름 " https://regex101.com/r/kMe3Zt/4

정규식 : (\"[^"]*\"\s*:(((\[\])|(\"\")|"0000-00-00"|"0000000000"|(\{\}))|(0.0))+,?)

C# 코드 :

public static string clearJSON(string data) 
    { 
     var regexx = @"(\""[^""]*\""\s*:((\[\])|\""\""|0|""0000-00-00""|""0000000000""|(\{\}))+,?)"; 
     var result = ""; 
     do 
     { 
      result = Regex.Replace(data, regexx, string.Empty); 
     } while (Regex.IsMatch(result, regexx)); 
     return result.Replace(",}", "}").Replace(",]", "]"); 
    } 

감사합니다.

답변

0

는 쉬운 방법이있을 수 있습니다 ... 당신이 JSON.NET을 (모든 사람이 일)를 사용하는 경우, 당신은 널 (null) 및 기본 값 도랑 설정의 몇 가지를 사용할 수 있습니다

var jsonSerializerSettings = new JsonSerializerSettings 
{ 
     NullValueHandling = NullValueHandling.Ignore, 
     DefaultValueHandling = DefaultValueHandling.Ignore 
}; 

더 여기에 정보 : https://www.newtonsoft.com/json/help/html/SerializationSettings.htm

+0

네, 이것이 제가 생각하는 최선의 해결책입니다. 하지만 제 경우에는 수천 개의 웹 서비스 필드가 있습니다. (저는 다양한 클라이언트 웹 서비스를 호출하고 매일 새로운 웹 서비스를 추가합니다.)이 필드는 .net에 의해 자동으로 생성됩니다. 따라서 아래와 같이 기본값을 정의하기 위해 모든 필드를 재정의하는 것은 정말 어려울 것입니다. 솔루션을 사용하려면 모든 필드의 기본값을 정의해야합니다. :(https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_DefaultValueHandling.htm – maxmilianx

관련 문제