2016-12-20 4 views
0

하나의 주소에서 다른 주소로 패키지를 전달하기위한 JSON 표현을 고려하십시오. 간체,중복 키가 JSON에 중첩 된 경우 OK

{ 
    "parcelId": 123, 
    "source": { 
     "street": "123 Main Street", 
     "city": "Anytown", 
     "state": "New York" 
    }, 
    "destination": { 
     "street": "456 Avenue B", 
     "city": "Elsewhere", 
     "state": "New Jersey" 
    } 
} 

나는 키 "거리", "도시"및 "상태" 법적으로 "소스"와 "대상"객체 모두에 중첩 될 수 있음을 상당히 확신합니다. 기술적 인 이유로 인해 키 이름이 이 아니고이 반복되어야합니까?

+0

짧은 : 아니요. JSON의 개별 부분에서 키를 재사용 할 수 있다는 점을 의심하게 만드는 요인은 무엇입니까? – Sirko

답변

1

기술적 인 이유로 인해 키 이름을 반복해서 사용하지 않아야합니까?

아니요.

나는 스칼라/자바 객체를 serialising 경우, 그 목적은 같을 수 :

class Delivery { 
    val parcelId : String 
    val source : Address 
    val destination : Address 
} 

필드 이름은 Address 개체의 여기에 같은 것이다.

1

JSON에서 다른 객체의 일부인 중복 된 속성 키가 있으면 아무 문제가 없습니다.

JSON 예제는 완벽하게 유효합니다.


이것은 같은 수준에있는 경우에만 문제가됩니다. 예를 들어

이 개 source 제품 : 하나의 객체 내부

{ 
    "parcelId": 123, 
    "source": { 
     "street": "123 Main Street", 
     "city": "Anytown", 
     "state": "New York" 
    }, 
    "source": { 
     "street": "456 Avenue B", 
     "city": "Elsewhere", 
     "state": "New Jersey" 
    } 
} 

또는 두 street 속성 : 당신이 다음 다른 delivery.streetdelivery.street이 있고 경우

"source": { 
     "street": "456 Avenue B", 
     "street": "Elsewhere", 
     "state": "New Jersey" 
    } 
0

호는이 혼란 스러울 것입니다. 그러나 당신은 그렇지 않습니다. delivery.source.streetdelivery.destination.street이 있습니다. 기본적으로 street 키는 이제 완전히 다른 객체를 처리합니다.