반응형
2개의 JSON 객체 비교
중복 가능성:
JavaScript에서의 객체 비교
2개의 JSON 오브젝트를 도입하여 그 2개를 비교하여 변경된 데이터가 없는지 확인하는 방법이 있습니까?
편집
코멘트를 검토한 후, 어느 정도 설명이 필요합니다.
JSON 오브젝트는 다음과 같이 정의됩니다.
"이름/값 쌍의 순서가 정렬되지 않았습니다.개체는 {(왼쪽 중괄호)로 시작하고 }(오른쪽 중괄호)로 끝납니다.각 이름 뒤에는 : (마이너스)가 붙고 이름과 값의 쌍은 , (마이너스)로 구분됩니다." -- json.org
간단하게 말하면, 2개의 JSON 오브젝트 리터럴을 비교할 수 있는 것이 목표입니다.
저는 javascript guru가 아니기 때문에 javascript에서 오브젝트 리터럴이라면 그렇게 불러야 할 것 같습니다.
제가 찾고 있는 방법은 다음과 같습니다.
- 고유한 이름/값 쌍을 찾기 위한 심층 재귀
- 두 객체 리터럴의 길이를 확인하고 이름/값 쌍을 비교하여 불일치가 있는지 확인합니다.
JSON을 구문 분석하고 두 개체를 비교하는 것만으로는 완전히 동일한 개체 참조가 아니기 때문에 충분하지 않습니다(단, 같은 값일 수도 있음).
대등하게 행동해야 해
from http://threebit.net/mail-archive/rails-spinoffs/msg06156.html - jQuery 를 사용하는 것 같습니다.
Object.extend(Object, {
deepEquals: function(o1, o2) {
var k1 = Object.keys(o1).sort();
var k2 = Object.keys(o2).sort();
if (k1.length != k2.length) return false;
return k1.zip(k2, function(keyPair) {
if(typeof o1[keyPair[0]] == typeof o2[keyPair[1]] == "object"){
return deepEquals(o1[keyPair[0]], o2[keyPair[1]])
} else {
return o1[keyPair[0]] == o2[keyPair[1]];
}
}).all();
}
});
Usage:
var anObj = JSON.parse(jsonString1);
var anotherObj= JSON.parse(jsonString2);
if (Object.deepEquals(anObj, anotherObj))
...
언급URL : https://stackoverflow.com/questions/4465244/compare-2-json-objects
반응형
'sourcecode' 카테고리의 다른 글
스프링: @ResponseBody "ResponseEntity"를 반환합니다. (0) | 2023.02.15 |
---|---|
TypeScript 정적 클래스 (0) | 2023.02.15 |
Spring MVC REST 컨트롤러에서 HTTP 헤더 정보에 액세스하려면 어떻게 해야 합니까? (0) | 2023.02.15 |
C#을 사용하여 csv 파일을 json으로 변환 (0) | 2023.02.15 |
워드프레스:$wpdb->get_results를 사용할 때 결과를 이스케이프 해제하려면 어떻게 해야 합니까? (0) | 2023.02.15 |