2010-12-06 2 views
0

현재 주문한 JSON 문자열이 내 iPhone 앱에 전달되고 JSON 프레임 워크를 사용하여 구문 분석됩니다.JSON-Framework 이상한 순서로 데이터 구문 교환하기

"league_table": object{ 
"Premiership": array[6], 
"Championship": array[6], 
"Division 1": array[6], 
"Division 2": array[6], 
"Division 3": array[6] 
} 

를 그것이 이상한 순서를 발생한다는 파싱 그러나 때 다음과 같이

데이터이다.

Division 2 
Division 1 
Championship 
"Division 3" 
Premiership 

전화 번호는 NSLog(@"%@",[dictionaryValue allKeys]);입니다.

누구나 전에 경험 했습니까? 다시 정렬하려면 어떻게해야할까요? 이는/키 값 쌍입니다 지금까지 내가 말할 수있는

{"league_table": 
{ 
"Premiership":[], 
"Championship":[], 
"Division 1":[], 
"Division 2":[], 
"Division 3":[]} 
} 

때문에이 같은 구문을 분석해야합니다

는 UPDATE :

짧아 UN 파싱 JSON은 여기 주문. 예를 들어 http://json.parser.online.fr/으로 이동하여 붙여 넣으면 정확한 순서로 구문 분석됩니다. JSON-Framework은 구문 분석을 전혀하지 않지만 실제 정렬이없는 이상한 순서로 구문 분석합니다.

답변

0

그래, 나는 전에 그것을 보았다.

이 문제가 발생합니까? 그것은 Dictionary (keyed)처럼 보입니다. 그래서 당신의 어플리케이션이 키에 의해 필요한 요소에 액세스하는 것 같습니다.

JSON 배열 형식이 순서를 유지한다고 생각합니다.

편집

좋아, 그래서 당신은 순서를 유지할 필요가 ...하지만 키가 중요하지 않다처럼 당신이 말에서, 그것은 보인다.

JSON 문자열 생성을 제어하고 있습니까? 그렇다면 다음과 같이 데이터를 표시 할 수 있습니다.

[ 
{ 
"leagueName":"Premiership", 
"leagueLines":[...] 
}, 
{ 
"leagueName":"Championship", 
"leagueLines":[...] 
}, 
{ 
"leagueName":"League One", 
"leagueLines":[] 
}, 
... etc .... 
] 

정보를 얻기 위해 리그 이름을 입력했습니다.당신이 뭔가를해야 할 수도의를 알고있는 사람 :

행운은 당신이 무엇을 의미하는

+0

이봐 요, 문제는 그때 나는 그 다음에 ForEach 루프를 사용하여 키를 가져 와서 그 아래의 아이들을 반복합니다. 같은 순서로 주문하면 다른 순서로 출력됩니다. –

+0

고마워요! 이것은 그것이 일할 수있는 것처럼 보인다, 나는 사람이 내일 이것 1을 시험해 보게 할 것이다. –

+0

안녕하세요 대니, 어떻게 시작하셨습니까? 사전 대신 사전을 사용하고 있습니까? – MDMonty

4

JSON 개체 필드에는 정의 된 순서가 없습니다.

  1. 단일 필드 객체의 배열 : 키/값 쌍의

    [{"Premiership": array[6]}, 
    {"Championship": array[6]}, 
    {"Division 1": array[6]}, 
    {"Division 2": array[6]}, 
    {"Division 3": array[6]}] 
    
  2. 배열 :

    당신이 정의 된 순서로 키/값 쌍을 원하는 경우, 기본적으로 두 가지 옵션이 있습니다
    [["Premiership", array[6]], 
    ["Championship", array[6]], 
    ["Division 1", array[6]], 
    ["Division 2", array[6]], 
    ["Division 3", array[6]]] 
    

(!) 참고 : 나는 반 추측하고있어 그 샘플 데이터 및 JSON 사이의 관계. 나는 objectarray[6]이 거기에서 무엇을하고 있는지 모른다.

+0

임 꽤 확실하지, 설정이 바로 식으로 JSON 프레임 워크는 그것의 전송 순서 유적 구문 분석을 잘 보인다. –

+1

키/값의 전체 점이 배열의 요소를 찾기 위해 인덱스를 알 필요가 없습니다. 키 이름을 사용하여 순서가 잘못된 데이터를 얻을 수 있습니다. 데이터가 인덱스 된 배열에 저장되어 있지 않으면 특정 순서로 데이터가 유지된다는 보장은 없습니다. – ExitToShell

+0

키를 순서대로 참조하여 어딘가에서 보내는 것과 같이 주문이 중요 해지면 언제든지 주문할 수 있습니다. 사전에는 있지만 순서는 없으며 무작위 순서로 존재하는 것과 같습니다. –