получение значения вложенного JSON с jquery - PullRequest
0 голосов
/ 11 марта 2020

У меня очень мало опыта работы с jSON

Моя проблема заключается в получении значения из вложенных массивов.

Я пробовал for loops и .each(), но по некоторым причинам он никогда не работает, как ожидалось.

Я пытаюсь получить доступ к artname.artists.name для каждого artname объекта.

Я могу console.log сделать это, выполнив console.log(data.artname[0].artists.name);

Я пытался использовать для l oop внутри .each ();

Может кто-нибудь помочь мне здесь?

Вот пример кода май

var i;
var actors = data.artname;
var text = "";
for (i=0; i <actors.length; i++){
 text += actors[i] + "<br>";
console.log(actors.name);
}

Я могу получить доступ к role из artname, но я не могу go глубже и получить доступ к имени актера из artists

$.each(data.artname, function(i, arts){
$("#arts").append( '<li>' + 'Role:' + arts.role + " " + '</li>');  

   $.each(arts.artists, function(j,actor){ 


     $("#actor").append( '<li>' + 'Actor:' + actor.name  + '</li>'); // gives undefined


   });

});

Вот часть файла JSON.

    "data": {
"artname" : [ {
    "nr" : 123,
    "role" : "john booth",
    "artists" : {
      "nr" : 81,
      "name" : "Tom Tomson",
      "birthday" : "1954-01-11",
      "allowed" : true,
      "printForm" : "Tom Hanks (11.01.1954-15.04.1999)"
    },
    "profession" : {
      "name" : "actors"
    }
  }, 
  "artname" : [ {
      "nr" : 153,
      "role" : "clair luv",
      "artists" : {
        "nr" : 141,
        "name" : "Ron Ronson",
        "birthday" : "1924-03-11",
        "allowed" : true,
        "printForm" : "Ron Ronsson (11.03.1924-11.04.1959)"
      },
      "profession" : {
        "name" : "actors"
      }
    }, 
    "artname" : [ {
        "nr" : 423,
        "role" : "john booth",
        "artists" : {
          "nr" : 64,
          "name" : "Jane Joe",
          "birthday" : "1974-01-11",
          "allowed" : true,
          "printForm" : "Jane Doe (11.01.1974-15.04.1999)"
        },
        "profession" : {
          "name" : "actors"
        }
      }

}

1 Ответ

1 голос
/ 11 марта 2020

С

$.each(data.artname, function(i, arts){
    $.each(arts.artists, function(j,actor){

Вы l oop более arts.artists . Но это Объект, а не Массив. Ваша переменная j станет именем ключа / атрибута, а субъект станет значением:

$.each(arts.artists, function(j,actor){ 
  console.log(j+': '+actor);
}

, попробуйте это и переосмыслите, что вы хотите получить вместо этого: )

Если вам нужно только имя, попробуйте следующее:

$.each(data.artname, function(i, arts){
    $("#arts").append( '<li>' + 'Role:' + arts.role + " " + '</li>');  
    console.log(arts.artists.name);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...