Stringify 및 Regex 교체로 JSON 형식 (JavaScript)에 도움이 필요합니다.
정규식에 무언가가 누락되었으며 쉼표 앞의 각 항목의 마지막 문자를 제거하고 있습니다.
샘플 코드 :
let test_json = {
"a" : { "a1" : "one", "is_active" : true, "a2" : "two" },
"b" : { "b1" : "one", "is_active" : true, "b2" : "two" }
};
JSON.stringify(test_json, null, 3).replace(/[^}],\n( )*"/g, ', "');
결과는 다음과 같습니다.
"{
"a": {
"a1": "one, "is_active": tru, "a2": "two"
},
"b": {
"b1": "one, "is_active": tru, "b2": "two"
}
}"
내가 얻고 자하는 것은 :
"{
"a": {
"a1": "one", "is_active": true, "a2": "two"
},
"b": {
"b1": "one", "is_active": true, "b2": "two"
}
}"
잘못된 것 :
"one,"one ",
"tru, "true",
답변
3 BenWainwright
문제는 다음과 같은 문자 시퀀스를 찾는 것입니다.
- 닫는 중괄호가 아닌 모든 문자
- 쉼표
- 개행 문자
- 임의의 공간
그리고 전체 시퀀스를 대체 합니다 . "true"끝에있는 "e"는 닫는 중괄호가 아니기 때문에 마찬가지로 대체됩니다.
필요한 것은 시퀀스의 첫 번째 항목이 "닫는 중괄호 바로 뒤에 오는 쉼표"입니다. 부정적인 lookbehind를 사용하여이 작업을 수행 할 수 있습니다 .
let test_json = {
a: {
a1: "one",
is_active: true,
a2: "two"
},
b: {
b1: "one",
is_active: true,
b2: "two"
},
};
const result = JSON.stringify(test_json, null, 3).replace(
/(?<!}),\n\s*/g,
", "
);
console.log(result);
1 MCP
JSON.stringify(test_json,null,3).replace(/([^}]?),\n( )*"/g, '$1, "');
그것이 최선의 방법인지는 확실하지 않지만 가장 먼저 떠오른 것입니다.