2013-08-28 3 views
1

NSJSONSerialization을 사용하여 로컬 JSON 파일을 구문 분석하려고합니다. iOS 6에서 제대로 작동하지만 iOS 5에서 오류가 발생합니다. The operation couldn’t be completed. (Cocoa error 3840.)" (Duplicate key for object around character 1515.) iOS 5에는 복제 키가 있지만 iOS 6에는 복제 키가있을 수 있습니까? 나는 유효한 JSON 파일이라는 것에 동의하는 다양한 JSON 유효성 검사 서비스를 시도했다. 그 \ 문자를 읽을 수 있습니다,하지만 내 JSON 찾을 수 없습니다 \ 문자를 사용하여 찾기가 포함되어 있습니다. 이 JSON을 iOS 5에서 deserialize하려면 어떻게해야합니까?iOS 5 NSJSONSerialization 오류

+1

JSON 개체에서 중복 키를 피하기 위해 웹 서비스를 설득 할 수 없다는 사실이 밝혀지면 타사 라이브러리에 의존 할 수 있습니다. 몇 가지 있지만, 중복 키 동작을 제어하는 ​​옵션이있는 라이브러리는 하나만 말할 수 있습니다. [JPJson] (https://github.com/couchdeveloper/JPJson). 공개 : 글쎄, 난 저자 야) – CouchDeveloper

답변

3

RFC 4672에 따라 중복 키가 잘못되었습니다. §2.2. 객체, 단지 상태 :

"... 객체 내의 이름은 고유해야합니다."

단어의 의미는 RFC 2119에 정의 된 "해야한다"

  1. 이 단어, 또는 형용사 "권장"는 이를 무시하는 특정 상황에서 타당한 이유가있을 수 있음을 의미해야한다 특정 항목이지만 전체적인 의미를 이해하고 주의 깊게 다른 과정을 선택하기 전에 무게를 달아야합니다.

    1. 는 조용히 중복 키에 동의하고 잠재적 :이다

, NSJSONSerialization 중복 키에 대한 행동이 구성 옵션 있어야 6.

IMO 아이폰 OS에서 "올바른"여전히 동작 고유 한 키 (NSDictionary의 경우 true)가있는 연관 컨테이너 인 경우 생성 된 표현에서 중복 된 항목을 생략하거나

  • 에 경고를 기록합니다. 오류 콘솔 또는
  • 신호에 오류가 발생했습니다.
  • +0

    의미가 있습니다. iOS 5에서는 복제 키가 유효하지 않은 것으로 간주됩니다. 문제가되는 키를 발견하여 변경했으며 이제는 iOS 5에서 올바르게 비 직렬화됩니다. –

    +0

    벌금, 중복 키로 문제가 발생합니다. 그들을 피하는 것이 좋습니다. – CouchDeveloper