답변
예, JSON 배열의 요소 순서는 유지됩니다. RFC 7159 -The JavaScript Object Notation (JSON) Data Interchange Format 가입일 (강조 광산)
객체는 0 개 이상의 이름/값 쌍 순서화 컬렉션 이름 문자열이고, 값은 문자열, 숫자, 부울 널이다 , 객체 또는 배열.
배열은 이며 0보다 큰 값을 갖는 시퀀스로되어 있습니다.
"개체"및 "배열"이라는 용어는 JavaScript의 규칙에 따라 작성되었습니다.
배열의 요소 순서 ([]
)가 유지됩니다. "객체"({}
)에서 요소의 순서 (이름 : 값 쌍)는 아닙니다. JSON 포맷터/파서 자체가 아니라 언어 별 객체 (사전)를 사용하면 "뒤죽박죽"일 수 있습니다. , NSDictionary, Hashtable 등)를 내부 표현으로 사용합니다.
"JSON 목록의 요소 순서가 유지됩니까?" 좋은 질문이 아닙니다. "[...] 할 때 JSON 목록의 요소 순서가 유지됩니까?" Felix King이 지적했듯이 JSON은 텍스트 형식의 데이터 형식입니다. 그것은 이유없이 돌연변이가 없습니다. JSON 문자열과 (JavaScript) 객체를 혼동하지 마십시오.
아마 당신은 JSON.stringify(JSON.parse(...))
과 같은 작업에 대해 이야기하고있을 것입니다. 이제 대답은 : 그것은 구현에 달려 있습니다. JSON 파서의 99 % * 객체의 순서를 유지하고 배열의 순서를 유지 할 수 있지만, 당신은뿐만 아니라
{
"son": "David",
"daughter": "Julia",
"son": "Tom",
"daughter": "Clara"
}
같은 것을 저장하고 객체의 순서를 유지하는 파서를 사용하여 JSON을 사용할 수 없습니다.
*이 아마 훨씬 더 :)
적어도 JSON 파서 사용법에 대해 이야기하고 있다면 틀린 말입니다. V8은 주문을 유지하고 있으며 JSON 파서 사용량의 1 % 이상을 차지하고 있다고 생각합니다. http://code.google.com/p/v8/issues/detail?id=164#c1 –
@BenAtkin 귀하의 링크가 V8의 ** ** ** 주문 유지 방법에 대한 설명을 가리키는 것은 재미 있습니다. – user123444555621
"사실상 표준은 V8도 마찬가지이지만 한 가지 예외가 있습니다." –
일부 자바 스크립트 엔진은 삽입 순서로 키를 유지한다. V8 (예 : keeps all keys in insertion order except for keys that can be parsed as unsigned 32-bit integers).
이
는 다음 중 하나를 실행하면 것을 의미한다 :var animals = {};
animals['dog'] = true;
animals['bear'] = true;
animals['monkey'] = true;
for (var animal in animals) {
if (animals.hasOwnProperty(animal)) {
$('<li>').text(animal).appendTo('#animals');
}
}
var animals = JSON.parse('{ "dog": true, "bear": true, "monkey": true }');
for (var animal in animals) {
$('<li>').text(animal).appendTo('#animals');
}
당신은 지속적으로 크롬에 개, 곰, 그 순서 원숭이를 얻을 것이다하는 V8을 사용합니다. Node.js도 V8을 사용합니다. 수천 개의 항목이 있더라도 유지됩니다. 다른 자바 스크립트 엔진과 YMMV.
하지만 JSON에서 정의되지 않은 동작에 의존합니다. 교환하는 내용이 모두 동일한 동작을하지 않을 수도 있습니다. –
실제적으로 키의 유형이 NaN 인 경우 브라우저는 순서를 변경하지 않습니다.
다음 스크립트를 출력합니다 "하나", "2", "세"
var foo={"@3":"Three", "@1":"One", "@2":"Two"};
for(bar in foo) {
alert(foo[bar]);
}
: 다음 스크립트를 출력 "세", "하나", "2"반면
var foo={"3":"Three", "1":"One", "2":"Two"};
for(bar in foo) {
alert(foo[bar]);
}
하지만 JSON에서 정의되지 않은 동작에 의존합니다. 교환하는 내용이 모두 동일한 동작을하지 않을 수도 있습니다. –
이 답변은 개체에 대해 설명합니다. 질문은 json "list"와 관련이 있는데, 이는 배열을 의미하는 것으로 만 추론 할 수 있습니다.이 배열은 의미 론적으로 json 사양에 따라 정렬됩니다 (Jeremy의 대답 참조). – Tom
- 1. C# 목록의 요소 순서가 결정적입니까? <T>?
- 2. 순서가 지정된 목록의 열거 형 또는 집합
- 3. SQL Server 2005 테이블에 행을 삽입하면 순서가 유지됩니까?
- 4. 목록의 요소 확장하기
- 5. JLists - 목록의 요소 수
- 6. 일반 목록의 요소 비교
- 7. Haskell에서 목록의 튜플 요소 업데이트하기
- 8. 목록의 모든 요소 서식 지정
- 9. 목록의 요소 색인을 얻는 방법
- 10. 목록의 마지막 요소 제거 (체계)
- 11. html 순서가 지정되지 않은 목록의 스타일을 제어하는 방법은 무엇입니까?
- 12. PHP에서 배열의 요소/JSON 에코
- 13. 대용량 목록의 고유 요소 수를 효율적으로 계산
- 14. 쉼표로 구분 된 목록의 마지막 요소 생략.
- 15. 목록의 요소 색인을 찾는 방법은 무엇입니까?
- 16. Ant flaka : 목록의 각 요소 수정
- 17. 파이썬 목록의 튜플에서 고유 한 요소 찾기
- 18. 목록의 기존 요소 앞에 어떻게 추가합니까?
- 19. Grails 목록의 첫 번째 요소 가져 오기
- 20. STL Map에 생성자 초기화 목록의 요소 추가?
- 21. IEnumerable <TSource> Concat <TSource> 요소의 순서가 유지됩니까?
- 22. 클러스터 된 인덱스가있는 테이블에 새 행을 추가 할 때 행의 실제 순서가 유지됩니까?
- 23. 정규 expr이 필요합니다. 속성의 순서가 중요하지 않은 html 요소
- 24. NSTimer는 자동으로 유지됩니까?
- 25. For-Loop 카운터는 유지됩니까?
- 26. 잔금은 출시와 함께 유지됩니까?
- 27. PHP로 file_get_contents가 그대로 유지됩니까?
- 28. 임시 파일의 길이는 유지됩니까?
- 29. jquery json select - json 요소 전체에 select 옵션을 설정합니다.
- 30. 할당 순서가
더 구체적이어야합니다. JSON은 데이터 교환 형식이며 기본적으로 ** 텍스트 **입니다. 캐릭터의 위치가 임의로 변경되는 것은 아닙니다. 당신이 보낸 것과 같은 방식으로 그것을 받게됩니다. –
json.org의 공식 JSON 구문으로 안내 할 것입니다. JSON에는 "목록"이 없습니다. 그것에는 "배열"과 "객체"가 있습니다. –