Python은 JSON Diff를 사용하여 다단계 JSON 개체를 비교합니다.

Salman Mehmood 2023년10월10일
  1. Python에서 다단계 JSON 개체 비교
  2. 같음 연산자를 사용하여 Python에서 다단계 JSON 개체 비교
  3. jsondiff를 사용하여 Python에서 다단계 JSON 개체 비교
Python은 JSON Diff를 사용하여 다단계 JSON 개체를 비교합니다.

이 문서는 두 개의 다중 수준 JSON 개체를 비교하고 동일한지 여부를 확인하는 방법을 보여 주는 것을 목표로 합니다.

Python에서 다단계 JSON 개체 비교

JavaScript Object Notation의 줄임말인 JSON 객체는 주로 데이터 교환에 사용되며 일반적으로 매우 가벼운 것으로 간주됩니다. 주요 이점 중 하나는 사람과 기계가 쉽게 이해할 수 있다는 것입니다. 쉽게 파싱할 수 있으므로 장치에서 귀중한 정보를 추출할 수 있습니다.

자주 사용하기 때문에 어떤 이유로든 두 객체를 비교해야 할 수 있습니다. 내용이 동일한지 확인하거나 다른 용도로 사용할 수 있습니다.

다음 코드를 고려하십시오.

obj1 = {
    "countries": [
        {
            "name": "Great Britian",
            "cities": [{"name": "Manchester"}, {"name": "London"}],
        }
    ]
}

obj2 = {"countries": [{"name": "Great Britian", "cities": [{"name": "London"}]}]}

코드 스니펫은 국가 및 해당 도시에 대한 정보를 저장하는 두 개의 JSON 개체가 있음을 보여줍니다. 여기서 주목해야 할 흥미로운 점은 개체가 내부에 중첩된 더 많은 JSON 개체를 포함한다는 의미인 다중 수준이라는 것입니다.

같음 연산자를 사용하여 Python에서 다단계 JSON 개체 비교

타사 라이브러리를 살펴보기 전에 표준 Python 함수를 통해 작업을 수행할 수 있는지 확인하는 것이 가장 좋습니다. 다행스럽게도 평등은 우리의 사용 사례에서도 잘 작동합니다.

그러나 데이터 필터링 또는 특정 변경 사항 찾기와 같이 변수에 대한 더 많은 제어가 필요한 경우 등호 연산자가 필요한 만큼의 유연성을 제공하지 않기 때문에 타사 라이브러리를 사용해야 할 수 있습니다. 더 간단한 경우에는 등호 연산자를 사용하는 것으로 충분합니다.

다음 코드를 고려하십시오.

obj1 = {
    "errors": [{"error": "err1", "fld": "mail"}, {"error": "err2", "fld": "name"}],
    "success": "false",
}

obj2 = {
    "errors": [{"error": "err1", "fld": "mail"}, {"error": "err2", "fld": "name"}],
    "success": "false",
}

obj3 = {
    "errors": [
        {"error": "err1", "fld": "mail"},
        {"error": "err2", "fld": "name"},
        {"error": "err3", "fld": "time"},
    ],
    "success": "false",
}

print(obj1 == obj2)
print(obj2 == obj3)

출력:

True
False

다음에서 3개의 JSON 객체가 선언된 것을 볼 수 있는데, 그 중 2개는 같고 1개는 다릅니다. 같음 연산자를 사용하여 동일한지 여부를 확인할 수 있습니다.

이 접근 방식은 타사 라이브러리보다 구현하기가 더 쉽고 라이브러리 문서를 검토하는 번거로움을 줄여줍니다. 반면에 필요한 경우 타사 모듈/라이브러리를 사용하여 얻을 수 있는 많은 기능을 제공하지 않습니다.

jsondiff를 사용하여 Python에서 다단계 JSON 개체 비교

‘jsondiff’는 JSON과 JSON 유사 구조를 구분하는 데 사용할 수 있는 타사 오픈 소스 모듈입니다. 이 라이브러리를 사용하면 JSON 객체 간의 차이점을 찾기가 매우 쉬워질 수 있습니다.

우리가 어떻게 할 수 있는지 알아보기 전에 먼저 jsondiff를 설치해 보겠습니다. 이는 타사 모듈이고 표준 Python 설치에 내장되어 있지 않기 때문입니다.

jsondiff 설치 안내

명령 프롬프트를 열고 아래 명령을 실행하여 jsondiff 설치를 시작합니다.

pip install jsondiff

출력:

Collecting jsondiff
Downloading jsondiff-2.0.0-py3-none-any.whl (6.6 kB)
Installing collected packages: jsondiff
Successfully installed jsondiff-2.0.0

jsondiff가 설치된 후 이를 사용하여 작업을 수행할 수 있습니다.

다음 코드를 고려하십시오.

import jsondiff

obj1 = {
    "countries": [
        {
            "name": "Great Britian",
            "cities": [{"name": "Manchester"}, {"name": "London"}],
        }
    ]
}

obj2 = {
    "countries": [
        {
            "name": "Great Britian",
            "cities": [{"name": "Manchester"}, {"name": "London"}],
        }
    ]
}

res = jsondiff.diff(obj1, obj2)

if res:
    print("Diff found")
else:
    print("Same")

출력:

Same

다음 코드에서는 타사 라이브러리 jsondiff를 사용하여 두 개체가 동일한지 여부를 확인했습니다. 더 구체적으로 말하면 jsondiff.diff() 함수를 사용하여 obj1obj2라는 JSON 개체를 전달했습니다.

jsondiff.diff가 작동하는 방식은 변경 사항을 찾으면 변경 사항을 반환하고 res라는 변수에 저장하는 것입니다. 차이가 있든 없든 비교 대상이 동일한지 다른지 빠르게 판단할 수 있습니다.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Python JSON