2012-09-28 2 views
1

일부 값 int 또는 값이없는 경우 0을 반환하는 api를 다루고 있습니다.이 값은 IMHO가되어야하지만 JSON의 경우 값이 없으면 int 또는 boolean false를 반환합니다. 잘못 작성된 API 또는 JSON이고 XML 값이 다를 수 있다는 의미입니까? 나는 항상 같고 완전히 교환 가능해야한다고 생각했습니다.XML 및 JSON에 대해 다른 값을 반환하면 잘못 작성된 API입니까?

답변

2

대답은 xml과 JSON이 자체 입력 시스템에서 동일하지 않으므로 동일한 대답을 제공해서는 안된다는 것입니다. Stronly typed : 항목을 찾을 수 없을 때 0이 좋은 답변이지만 예외적 인 경우 JSON false가 선호됩니다. 느슨한 유형 환경이 제공하는 자유를 사용하십시오. 따라서 두 api는 완전히 상호 교환 할 필요는 없습니다.

+0

질문에 대답하지 않습니다. – Quentin

+0

값이 있으면 XML 및 JSON에 대해 동일한 수, 즉 1556을 올바르게 반환합니다 (정수). 그러나 반환 할 값이없는 경우 XML의 경우 0 (정수)을 반환하지만 JSON의 경우 false (부울)를 반환합니다. 내가 다루고있는 대부분의 API는 특히이 것을 가지고 있지 않습니다. 하지만 제 질문은 더 일반적입니다 - JSON과 XML이 100 % 같은 값을 반환하는지 말 것인가? – nubm

+2

Xml은 강하게 입력되므로 동일한 필드에 부울 및 정수를 반환 할 수 없습니다. JavaScript와 loosy typed 인 JSON의 경우는 그렇지 않습니다. 따라서 '값 없음'을 나타내는 0은 강력한 형식 언어가 제공 할 수있는 최선의 결과입니다. 대다수의 (array | string) indexof 구현은 강하게 타입 화 된 언어에서 수행됩니다. 이것은 오히려 예외 (XML을 통해)를 던져야하지만 가치가 발견되지 않으면 '0'을 반환한다는 가난한 디자인은 오래된 전통입니다. 바라기를 이것은 당신의 질문에 대답했습니다. – Andries

2

XML과 JSON은 완전히 다른 데이터 모델을 가지고 있으며 API가 이러한 차이점을 완전히 숨기는 것은 매우 어렵습니다. 그러나 귀하의 질문은 불공평합니다. 사람들은 API가 문제가되는 API에 대해 디자인 목표 또는 제약 조건이 무엇인지 알지 못할 때 특정 속성을 가지고 있기 때문에 API가 잘못 설계되었다고 말합니다. 예를 들어 JSON 버전이 XML과 동등하지 않은 다른 것과 호환되도록하려고 시도했을 수도 있습니다.

관련 문제