반응형
에서 들여쓰기된 JSON 문자열을 최소화합니다.그물
입력된 JSON 문자열이 있습니다.
{
"a": 1
}
그러나 직렬화 또는 역직렬화할 인스턴스의 유형은 없습니다.
현재 상황에서 JSON 문자열을 최소화하는 가장 효율적인 방법은 무엇입니까?
{"a":1}
저는 도서관이 생산 준비가 되어 있다면 사용하는 것을 꺼리지 않습니다.
Regex.Replace(myJSON, "(\"(?:[^\"\\\\]|\\\\.)*\")|\\s+", "$1")
할 수 있을 거예요.공백 문자를 포함한 문자열은 유지되고 다른 공백 문자는 모두 삭제됩니다.모든 JSON 키워드(false
,true
,null
)는 콤마 또는 기타 구두점으로 구분해야 하므로 문자열 내의 공백만 유지할 필요가 있습니다.
첫 번째 옵션(\"(?:[^\"\\\\]|\\\\.)*\")
는 이중 따옴표로 묶인 문자열과 일치합니다.그(...)
출력은 캡처되어 대체품으로 사용할 수 있음을 의미합니다.$1
.그[^\"\\\\]
큰따옴표 또는 이스케이프 문자를 제외한 모든 문자와 일치합니다.\
.
매칭은 왼쪽에서 오른쪽으로 이루어지기 때문에 두 번째 옵션은\s+
는 문자열 내의 공간과 일치하지 않습니다.
그래서 우리는 전체 현과 바깥의 공간을 일치시킵니다.전자의 경우,$1
스트링 토큰입니다.후자의 경우는$1
그룹 1이 사용되지 않았기 때문에 빈 문자열입니다.
이것은 의도한 대로 동작합니다.
- 공간을 포함할 수 있는 JSON 토큰은 이중 따옴표로 묶인 문자열뿐입니다.JSON에는 따옴표로 둘러싸인 문자열이나 코멘트가 없습니다.
- JSON 문법은 모든 다중 문자 토큰 간에 단일 문자 구두점이 필요하므로 공백을 제거해도 토큰이 병합되지 않습니다.JavaScript에서는 토큰을 끊으려면 공간이 필요하기 때문에 문제가 발생할 수 있습니다.
var x=0
와는 다르다varx=0
그리고.x - -(y)
와는 다르다x--(y)
.
아래 정규식은 나에게 효과가 있다.
string json = @"{
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
"width": 500,
"height": 500
}
}"
Regex.Replace(json, @"\s(?=([^""]*""[^""]*"")*[^""]*$)", string.Empty);
에서 사용하고 있습니다.NET Core 앱 프로젝트.Regex는 그 대답에서 왔다.
언급URL : https://stackoverflow.com/questions/8913138/minify-indented-json-string-in-net
반응형
'programing' 카테고리의 다른 글
C#에서의 JSON 어레이 작성 (0) | 2023.03.18 |
---|---|
스프링 부트에서 ResponseStatusException을 던질 때 예외 메시지가 응답에 포함되지 않음 (0) | 2023.03.18 |
도커: WordPress 컨테이너에 80 이외의 포트를 매핑할 수 없습니다. (0) | 2023.03.18 |
개체가 런타임에 TypeScript를 사용하여 인터페이스를 구현하는지 확인합니다. (0) | 2023.03.18 |
리액트 후크 useEffect는 영속적으로 실행/무한 루프 (0) | 2023.03.18 |