2016-01-11 2 views
0

Я не могу получить значение JSON, чтобы проверить, надеется ли человек на очки при фотографировании, значение зависит от четырех массивов: фотографий, тегов, атрибутов и очков, я хочу проверьте значение «значение» true или false. Я использую alert(), чтобы проверить, выбрано ли значение, но ничего не получается. Я не знаю, какая часть получает неправильноне удалось получить значение из массива JSON в javascript

, чтобы получить значение JSON следующим образом я использую JavaScript:

var facesDet = $.getJSON(APIdetect, function() { 
    console.log("success"); 
    console.log(facesDet); 
}) 

.done(function (facesDet, tid) { 
    var VALUEIWANT = facesDet.photos[0].tags[0].attributes[0].gender[0].value; 

}); 

Значение JSON выглядит следующим образом:

{ 
"photos" : [ 
    { 
     "url" : "http://tinyurl.com/673cksr", 
     "pid" : "[email protected]_59ec9bb2ad15f", 
     "width" : 375, 
     "height" : 409, 
     "tags" : [ 
      { 
       "tid" : "[email protected]_59ec9bb2ad15f_56.53_40.83_0_1", 
       "recognizable" : true, 
       "confirmed" : false, 
       "manual" : false, 
       "width" : 30.67, 
       "height" : 28.12, 
       "center" : { "x" : 56.53, "y" : 40.83}, 
       "eye_left" : { "x" : 66.93, "y" : 33.99}, 
       "eye_right" : { "x" : 51.73, "y" : 33.99}, 
       "yaw" : -16, 
       "roll" : 0, 
       "pitch" : 0, 
       "attributes" : { 
        "face" : { "value" : "true", "confidence" : 82 }, 
        "gender" : { "value" : "female", "confidence" : 80 }, 
        "glasses":{"value" : "true", "confidence" : 100}, 
        "dark_glasses":{"value" : "true", "confidence" : 72}, 
        "smiling":{"value" : "false", "confidence" : 35} 
       } 
      } 
     ] 
    } 
], 
"status" : "success", 
"usage" : { 
    "used" : 1, 
    "remaining" : 99, 
    "limit" : 100, 
    "reset_time_text" : "Fri, 21 September 2012 12:57:19 +0000", 
    "reset_time" : 1348232239 
} 
} 
+3

использовать этот 'facesDet = JSON.parse (facesDet)', а затем использовать это '** вар VALUEIWANT = facesDet.photos [0] .tags [0] .attributes.gender.value; **' –

+2

атрибуты и пол - это «Объекты», а не «Массивы», поэтому вы получите такие свойства. 'facesDet.photos [0] .tags [0] .attributes.gender.value' или использование синтаксиса привязки массива' facesDet.photos [0] .tags [0] ['attributes'] ['gender'] ['value '] ' – synthet1c

+0

Благодарим вас за обнаружение моей ошибки. –

ответ

2

Вы судимый принимать значение от пола, как из массива:

var VALUEIWANT = facesDet.photos[0].tags[0].attributes[0].gender[0].value; 

Но в вашем json его obje ct, поэтому вы должны использовать:

var VALUEIWANT = facesDet.photos[0].tags[0].attributes.gender.value; 
+1

Благодарим вас за то, что вы заметили мою проблему, так как я увидел фигурные скобки, поэтому я подумал, что это массив, я должен понимать только значения, включенные в массив []. –

0

getJSON вернуть обещание не ответ, вы должны использовать этот код:

$.getJSON(APIdetect, function(facesDet) { 
    console.log("success"); 
    console.log(facesDet); 
}) 
2

Ваш доступ неправильный. У вас есть объект, но рассматривать его как массив

var VALUEIWANT = facesDet.photos[0].tags[0].attributes[0].gender[0].value; 
//             ^^^ and ^^^ 

право доступа:

var VALUEIWANT = facesDet.photos[0].tags[0].attributes.gender.value; 

данные:

"attributes" : { 
    "face" : { "value" : "true", "confidence" : 82 }, 
    "gender" : { "value" : "female", "confidence" : 80 }, 
    "glasses":{"value" : "true", "confidence" : 100}, 
    "dark_glasses":{"value" : "true", "confidence" : 72}, 
    "smiling":{"value" : "false", "confidence" : 35} 
} 
+1

Пол также является объектом, а не массивом. – jcubic

2

попробуйте этот.

facesDet.photos[0].tags[0].attributes.gender.value