최근에 JSON을 파고 들기 시작했고 현재는 숫자를 “식별자”로 사용하려고하는데 너무 잘 작동하지 않습니다. foo:"bar"
잘 작동하지만 0:"bar"
그렇지 않습니다.
var Game = {
status: [
{
0:"val",
1:"val",
2:"val"
},
{
0:"val",
1:"val",
2:"val"
}
]
}
alert(Game.status[0].0);
다음과 같은 방법으로 수행 할 수있는 방법이 있습니까? Game.status[0].0
내 인생을 더 쉽게 만들어 줄 것 같은 것. 물론 주위에 다른 방법이 있지만이 방법이 선호됩니다.
답변
JSON은 키 이름 만 문자열로 허용합니다. 이러한 문자열은 숫자 값으로 구성 될 수 있습니다.
그래도 JSON을 사용하고 있지 않습니다. JavaScript 개체 리터럴이 있습니다. 당신은 할 수 있습니다 키에 대한 식별자를 사용하지만, 식별자는 숫자로 시작할 수 없습니다. 그래도 문자열을 사용할 수 있습니다.
var Game={
"status": [
{
"0": "val",
"1": "val",
"2": "val"
},
{
"0": "val",
"1": "val",
"2": "val"
}
]
}
점 표기법으로 속성에 액세스하는 경우 식별자를 사용해야합니다. 대신 대괄호 표기법 사용 : Game.status[0][0]
.
그러나 그 데이터가 주어지면 배열이 더 의미가있는 것 같습니다.
var Game={
"status": [
[
"val",
"val",
"val"
],
[
"val",
"val",
"val"
]
]
}
답변
먼저 JSON이 아닙니다. JSON은 모든 키가 문자열이어야한다고 요구합니다.
둘째, 일반 배열은 원하는 작업을 수행합니다.
var Game = {
status: [
[
"val",
"val",
"val"
],
[
"val",
"val",
"val"
]
}
을 사용하면 작동합니다 Game.status[0][0]
. 점 표기법 ( .0
) 과 함께 숫자를 사용할 수 없습니다 .
또는 숫자를 인용 할 수 있습니다 (예 🙂 { "0": "val" }...
. 배열 대신 일반 객체가 있지만 동일한 구문이 작동합니다.
답변
아마도 어레이가 필요하십니까?
var Game = {
status: [
["val", "val","val"],
["val", "val", "val"]
]
}
alert(Game.status[0][0]);
답변
자바 스크립트 객체 속성의 이름은 밑줄 또는 편지 중 하나로 시작하지 않는 경우, 당신은 (같은 점 표기법을 사용하지 못할 Game.status[0].0
), 당신은 해야 되는 다른 표기법을 사용합니다 Game.status[0][0]
.
한 가지 다른 참고 사항, 상태 배열 내부의 객체가되어야합니까? 배열과 같은 객체를 사용하는 경우 대신 실제 배열을 사용하지 않는 이유는 무엇입니까?
답변
JSON은 키 유형을 문자열로 규제합니다. 목적은 객체의 멤버에 액세스하기 위해 점 표기법을 지원하는 것입니다.
예 : person = { “height”: 170, “weight”: 60, “age”: 32}. person.height, person.weight 등으로 멤버에 액세스 할 수 있습니다. JSON이 값 키를 지원하는 경우 이는 person.0, person.1, person.2와 같습니다.
답변
는 어때
Game.status[0][0] or Game.status[0]["0"] ?
이 중 하나가 작동합니까?
추신 : 귀하의 질문에있는 것은 JSON이 아닌 Javascript 객체입니다. JSON은 자바 스크립트 객체의 ‘문자열’버전입니다.
답변
JSON은 “JavaScript Object Notation”입니다. JavaScript는 키가 문자열 또는 기호 여야한다고 지정합니다.
MDN Docs의 다음 인용문은 “키 / 값”이라는 용어를 자주들을 때 “키 / 속성”이라는 용어를 사용합니다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Objects
JavaScript에서 객체는 속성 모음으로 볼 수 있습니다. 객체 리터럴 구문을 사용하면 제한된 속성 집합이 초기화됩니다. 그런 다음 속성을 추가하고 제거 할 수 있습니다. 속성 값은 다른 개체를 포함하여 모든 유형의 값이 될 수 있으므로 복잡한 데이터 구조를 구축 할 수 있습니다. 속성은 키 값을 사용하여 식별됩니다. 키 값은 문자열 또는 기호 값입니다.