JSON 오브젝트에서는 값의 시퀀스가 중요합니까?
JSON 오브젝트를 Java 프로그램 내에서 구축했습니다.
JSONObject jObj = {"AAA:aaa","BBB:bbb","CCC:ccc"}
다음 유형의 JSON 개체를 예상하는 서버로 이 개체를 보냅니다.
{"BBB:bbb", "AAA:aaa", "CCC:ccc"}
서버측에서 JSON 오브젝트의 순서가 정말 중요합니까?그렇다면 어떻게 순서를 변경할 수 있습니까?
서버측에서 JSON 오브젝트의 순서가 정말 중요합니까?
그건 중요하지 않아.다양한 JSON 사양에 따르면 속성의 순서는 중요하지 않습니다.예를 들어 다음과 같습니다.
"오브젝트는 이름/값 쌍의 순서가 매겨지지 않은 집합입니다." (출처:
오브젝트는 0개 이상의 이름/값 쌍의 순서 없는 집합입니다.여기서 name은 문자열이고 value는 문자열, number, boolean, null, object 또는 array입니다.(소스 RFC 7159)
안타깝게도, 그러한1 스펙의 측면을 무시하고 속성의 순서에 어느 정도 의미를 두는 바보들이 있습니다.(API를 지정하는 사람과 구현하고 있는 사람 사이에 연결이 끊어져 있어 JSON을 제대로 이해하지 못하는 경우가 많습니다.)
다행히 서버를 설계/실장하는 사람이 누구든 그런 실수를 하지 않았을 가능성이 높습니다.지금까지 본 Java JSON 파서의 대부분은 기본적으로2 ...을 구문 분석할 때 속성 순서를 유지하지 않습니다.해석되는 JSON 속성의 순서가 중요한 서버를 잘못 실장하는 것은 어렵습니다.
그렇다면 어떻게 순서를 변경할 수 있습니까?
곤란하지만, 나는 두렵다.
- 수동으로 JSON을 생성할 수 있습니다.
- Java 구현을3 위한 JSON이 하나 이상 있으며 이를 통해
Map
JSON 객체의 Atribute를 지정합니다.를 사용하는 경우LinkedHashMap
또는TreeMap
속성 키의 삽입 순서 또는 어휘 순서를 유지합니다.
1 - 예를 들어, 이 불량 개발자가 작업하고 있던 니트윗...https://stackoverflow.com/a/4515863/139985
2 - RFC 7159 에서도 다음과 같이 기술되어 있습니다.JSON 해석 라이브러리는 오브젝트멤버의 순서를 호출 소프트웨어에 표시할 수 있는지 여부에 대해 다릅니다.멤버의 순서에 의존하지 않는 실장은, 이러한 차이에 영향을 받지 않는다는 의미에서 상호 운용할 수 있습니다.필자가 읽은 바에 따르면 JSON 라이브러리는 애플리케이션 코드에서 쌍의 순서를 숨길 것을 권장합니다.
3 - JSON-simple : https://code.google.com/p/json-simple/다른 사람들도 있을 수 있어요.
IMHO는 불가능합니다.
JSON 문서에 따르면
개체는 이름/값 쌍의 순서가 정렬되지 않은 집합입니다.
때문에 필요한 것이 필요한 순서로 값을 입니다.json
서버가 수락할 수 있다고 가정하여 목록을 사용할 수 있습니다.
{"list": [ {"AAA":"aaa"},{"BBB":"bbb"},{"CCC":"ccc"}]}
다른 답변들은 순서가 중요하지 않아야 한다고 올바르게 지적한다.JSON의 무질서한 특성을 오해하는 특정 구현에서 순서가 문제가 될 수 있는 상황이 있습니다.
예를 들어, JSON 문자열의 해시를 가져와 향후 해시와의 비교를 위해 해시를 저장한다고 가정합니다.다음에 해시를 작성할 때 JSON 문자열의 필드 순서가 동일하지 않으면 해시는 달라집니다(JSON 문자열의 데이터는 동일해도 마찬가지).
이 문제는 JSON 문자열을 반환하는 API 또는 역직렬화기를 사용하여 필드의 순서가 일치하지 않는 경우 발생할 수 있습니다.
이 질문에서는 이 문제에 대해 자세히 설명하고 JSON 주문을 일관되게 혼재시키기 위한 해결책을 제공합니다.
JSON 객체의 필드 순서는 실제로 중요할 수 있습니다.사용하고 있는 시리얼라이저에 따라 다릅니다.예를 들어 상속된 개체를 직렬화할 때 type='라는 추가 JSON 필드가 표시됩니다.역직렬화 시 type 필드는 다른 JSON 필드보다 먼저 와야 합니다.그렇지 않으면 부모 필드가 됩니다.
언급URL : https://stackoverflow.com/questions/16870416/does-the-sequence-of-the-values-matter-in-a-json-object
'programing' 카테고리의 다른 글
AngularJS의 다른 컨트롤러에서 함수를 호출하려면 어떻게 해야 합니까? (0) | 2023.02.25 |
---|---|
조건부로 "ui-sref"를 실행하는 방법은 무엇입니까? (0) | 2023.02.25 |
SQL 개발자를 사용하여 자동 증가 열을 설정하는 방법 (0) | 2023.02.25 |
각도 JS에서 양식 제출 시 작업을 위해 preventDefault 또는 false를 반환할 수 없습니다. (0) | 2023.02.25 |
JSON Return을 사용한 PHP 스크립트에 대한 jQuery AJAX 호출 (0) | 2023.02.25 |