怎么可以获取我的标题,但不是我从JSON获取的练习单词

时间:2018-06-14 10:27:31

标签: javascript json

这就是我的JSON的样子

{
"main_object": {
"id": "new",
"getExerciseTitle": "TestToConfirm",
"language": "nl_NL",
"application": "lettergrepen",
"main_object": {
  "title": "TestToConfirm",
  "language": "nl_NL",
  "exercises": [
    {
      "word": "huisarts",
      "syllables": [
        "huis",
        "arts"
      ]
    }
  ]
},
"dataType": "json"
  }
}

这是我抓取getExerciseTitle的方式:

var ID = getUrlParameter("id");
var MEDIAARRAY;
//console.log(ID);

$(document).ready(function () {

$.getJSON('json_files/jsonData_' + ID + '.json', function(json) {
 //console.log(json);


var exercisetitle = json.main_object.getExerciseTitle;
   $("#getExerciseTitle").html(exercisetitle);


createExercise(json);
    });

});

这就是我试图获取words的方式(但这不起作用,我想知道这是怎么回事?

function createExercise(json) {
var exWord = json.main_object.main_object.exercises.word;
     $.each(exWord, function(data, value) {
         console.log(exWord);
     });

}

我的console.log()没有显示任何错误,因为我使用相同的方法获取exercisetitle,所以我不知道自己做错了什么。

3 个答案:

答案 0 :(得分:1)

由于json.main_object.main_object.exercises数组,因此没有word属性。它有一个对象作为唯一的条目,该对象具有word,而不是数组:

var exWord = json.main_object.main_object.exercises[0].word;
// ------------------------------------------------^^^

或循环:

json.main_object.main_object.exercises.forEach(function(exercise) {
    var exWord = exercise.word;
    // ...
});

答案 1 :(得分:1)

exercises是一个数组,而不是一个对象。您必须访问数组的元素才能访问具有word属性的对象。

function createExercise(json) {
  const exercises = json.main_object.main_object.exercises;
  exercises.forEach(function(exercise) {
    console.log(exercise.word);
  });
}

答案 2 :(得分:1)

var json = {
"main_object": {
"id": "new",
"getExerciseTitle": "TestToConfirm",
"language": "nl_NL",
"application": "lettergrepen",
"main_object": {
  "title": "TestToConfirm",
  "language": "nl_NL",
  "exercises": [
    {
      "word": "huisarts",
      "syllables": [
        "huis",
        "arts"
      ]
    }
  ]
},
"dataType": "json"
  }
}



$(document).ready(function () {

   var exercisetitle = json.main_object.getExerciseTitle;
   $("#getExerciseTitle").html(exercisetitle);
  
   var r = json.main_object.main_object.exercises;
  
   $.each(r,function(data,value){
    console.log(data,value.word)
   })


});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='getExerciseTitle'></div>

因为您试图访问数组元素而不让代码知道元素的索引。