JS разбор JSON.Неопределенная ошибка, когда она определена - PullRequest
0 голосов
/ 13 октября 2018

Это код JSON, который генерируется на стороне сервера и отправляется через веб-сокеты клиенту в виде строки:

{
    "zw_ob-k7g8ahcvFzAAAA":{
        "position":{  
             "x":319,
             "y":135
        },
        "mass":324,
        "name":21,
        "color":"#5058a9"
    },
    "uTFD8dw0OiqD4ErzAAAB":{
        "position":{  
            "x":473,
            "y":348
        },
        "mass":59,
        "name":7,
        "color":"#e79448"
    },
    "CvMRJ6rEFYoU1vajAAAC":{
        "position":{  
            "x":25,
            "y":604
      },
        "mass":147,
        "name":18,
        "color":"#cef6c3"
    },
    "_e6TLrfubHqf-7esAAAD":{
        "position":{  
            "x":146,
            "y":417
        },
        "mass":320,
        "name":13,
        "color":"#ab7aa0"
    }
}

На клиенте я использую JSON.Parse для анализа этой строки в структуре json.

planetsData = JSON.parse(data.planets);

for(var p in planetsData){

    var playerName = p;
    alert(p.position) //says "undefined" 
    var planetColor = p.color;
    var planetName = p.name;

    var planet = new Planet();
}

Я могу успешно получить p, p.color и p.name, но по какой-то причине говорится, что p.position - это undefined, поэтому я не могу получить доступ к p.position.xили p.position.y параметры.

1 Ответ

0 голосов
/ 13 октября 2018

Измените эту строку alert(p.position) на эту:

 alert(planetsData[p].position);

И для других применений.

Также вы можете добавить это:

p=planetsData[p];

Сначалацикла и теперь используйте сам код:

for(var p in planetsData){
   var playerName = p;

   p=planetsData[p]; //add this line here

   alert(p.position) ;
   var planetColor = p.color;
   var planetName = p.name;

   var planet = new Planet();
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...