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