2009-07-23 14 views
15

내 직감은 한 형식을 다른 형식에 넣는 것이 잘못되었음을 알지만 구체적인 이유가없는 것 같습니다. 대왜 JSON을 XML에 포함시키는 것이 좋지 않습니까?

<root> 
<stuff> 
    thing 
</stuff> 
<more> 
    <[!CDATA[{"a":["b","c"]}]]> 
</more> 
</root> 

는 두 부분은 논리적으로 서로 다른 코드에 의해 구문 분석 할 예정

<root> 
<stuff> 
    thing 
</stuff> 
<more> 
    <a> 
    b 
    </a> 
    <a> 
    c 
    </a> 
</more> 
</root> 

는 XML에 넣어하지만 교환 형식으로, 그것은 믹스 앤 매치 구문을 확인입니까?

JSON 응답을 구문 분석하는 기존 엔드 포인트가있을 경우 응답이 변경됩니까? XML 처리를 위해이 끝점을 다시 코딩해야합니다.

+5

sqlite 파일을 데이터베이스에 blob로 저장하는 것이 왜 나쁜가요? –

답변

21

두 가지 형식을 사용하는 교류 형식은 사용자와 상호 작용하려는 사람들에게 추가 부담을줍니다. 이제 그들은 XML 파서 을 JSON 파서로 가져와야합니다.

파일의 다른 부분에 대해 생각할 때 정신적으로 전환해야하기 때문에 사람들이 형식을 알아보기 어렵게 만듭니다.

마지막으로 전체 구조를 한 번에 쉽게 볼 수는 없습니다. 예를 들어, XPath를 사용하여 JSON 비트를 가져올 수 없으며 전체 응답을 JavaScript 객체로 처리 할 수도 없습니다. 두 가지 형식을 혼합하여 데이터를 조작 할 때 "최악의 경우"문제가 발생합니다.

+1

JSON 응답을 구문 분석하는 기존 엔드 포인트가있을 경우 응답이 변경됩니까? XML 처리를 위해이 끝점을 다시 코딩해야합니다. –

+0

이미 해결책이 있으므로 - 즉; XML 파서 상단에있는 JSON 파서 (parser) - 그럼 당신의 질문에 대한 해답은 이식성, 가독성, 유지 보수성, 평범한 구식의 맛에 관한 것입니다. 물론 * 지금은 * 작동하지만 XML을 전달할 사람, XML의 끝에 누가 JSON 구문 분석기가 필요한지 등을 설명하는 방법 등을 누가 읽을 지 생각해보십시오. 오히려 나중에 일을 연기하는 것처럼 보이기 때문에 나중에 더 많은 일이 만들어 질 수 있습니다. – shuckster

+1

@ Paul : 현재 구현을 위해 작동하는 경우 지금 변경할 이유가 없습니다. 그러나 Laurence가 설명하는 문제를 해결하기 위해 독창적 인 (독서 : 냄새 나는) 방법을 생각해내는 것이 그 중 하나 또는 다른 것을 고수하기를 원할 때입니다. –

7

데이터베이스 정규화 토론과 같습니다. 순수한 XML로 모든 작업을 수행하거나 (또는 ​​데이터베이스 스키마를 표준화하는 것), 특정 구현에 불필요하게 결합되지 않도록보다 깔끔하고 우아합니다. 그러나 XML을 JavaScript 객체로 변환해야하거나 (지저분한 테이블 당 5 개의 테이블을 결합해야하는 경우) 많은 추가 코드를 작성하여 불필요한 성능 저하를 초래할 수 있습니다.

모든 것은 공식적인 정확성과 편의성을 어떻게 균형 잡느냐에 달려 있습니다. 이것이 W3C에 의해 표준화되고 수백만의 친애하는 하나님이 사용하게 될 XML 교환 형식 인 경우 JSON을 사용하지 마십시오. 자신이 작성한 코드로만 처리되는 사내 응용 프로그램을위한 것이라면 JSON을 던져서 계속 진행하십시오!

+5

+1. 좋은 관행이 좋다. 그러나 그들은 좋은 생각을 대신 할 수는 없습니다. 때로는 패턴이 문제에 대한 최선의 해결책이 아니라는 것을 알고 있습니다. 때로는 해킹이 올바른 것입니다. 당신이하는 일, 당신이하는 이유, 그리고 더 지저분 할수록, 문서화하고 어딘가에 지저분함을 캡슐화해야하기 때문에 언젠가는 쉽게 대체 할 수 있습니다 :) – back2dos

3

제 생각에는 XML이 선호되는 데이터 전송 표현이지만 JSON은지도 및 배열과 관련하여 훨씬 표현력이 좋습니다. JSON을 xml에 임베드하여 목록이나 맵을 나타낼 때 아무런 문제가 없습니다.

관련 문제