sourcetip

숫자를 "인덱스"(JSON)로 사용

fileupload 2023. 4. 3. 21:41
반응형

숫자를 "인덱스"(JSON)로 사용

최근에 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]);

속성의 점 표기법(Javascript처럼)을 할 수 .Game.status[0].0대체 표기법을 사용해야 합니다.Game.status[0][0]

한 가지 다른 주의사항입니다. 상태 배열 내의 객체가 정말 필요합니까?개체를 어레이처럼 사용하는 경우 실제 어레이를 사용하는 것이 어떨까요?

JSON은 키 타입을 문자열로 규제합니다.목적은 객체의 멤버에 액세스하기 위한 도트 표기법을 지원하는 것입니다.

예를 들어, 사람 = {"키":170, "무게":60, "나이":32}입니다.회원은 개인으로 접속할 수 있습니다.키, 사람.중량 등JSON이 값 키를 지원하는 경우 person.0, person.1, person.2와 같습니다.

JSON은 "JavaScript 객체 표기법"입니다.JavaScript는 키가 문자열 또는 기호여야 함을 지정합니다.

MDN Docs의 다음 인용문에서는 "key/property"라는 용어를 사용하여 "key/value"라고 하는 표현을 자주 사용합니다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Objects

JavaScript에서 오브젝트는 속성 집합으로 볼 수 있습니다.오브젝트 리터럴 구문을 사용하면 제한된 속성 세트가 초기화되어 속성을 추가하거나 삭제할 수 있습니다.속성 값은 다른 객체를 포함하여 모든 유형의 값이 될 수 있으므로 복잡한 데이터 구조를 구축할 수 있습니다.속성은 키 값을 사용하여 식별됩니다.키 값은 문자열 또는 기호 값입니다.

어때

Game.status[0][0] or Game.status[0]["0"] ?

이것들 중 하나가 작동하나요?

PS: 질문하신 것은 JSON이 아닌 Javascript Object입니다.JSON은 Javascript Object의 string 버전입니다.

언급URL : https://stackoverflow.com/questions/8758715/using-number-as-index-json

반응형