Поскольку вы ищете элемент объекта с именем a
, а не элемент объекта, именем которого является значение , хранящееся в переменной "a" .
Вместо использования " точечной нотации " используйте "квадратную скобку "
$('#meta').html('Title: ' + json[a][b][0].value);
Для получения дополнительной информации см .: http://www.dev -archive.net / articles / js-dot-notation /
Редактировать:
Если структура JSON изменяется следующим образом:
Версия первая:
{
"http://example.org/about" :
{
"http://purl.org/dc/elements/1.1/title" : [{"value" : "annas homepage" , "type" : "literal"}]
}
}
Версия вторая:
{
"http://somewhereelse.com/something" :
{
"http://anotherplace.org/dc/blah-blah-blah/title" : [{"value" : "annas homepage" , "type" : "literal"}]
}
}
например, всегда естьодин объект, у которого есть один член, у которого есть один член
... и вам нужно нацелить его:
$.getJSON('rdfjson.json', function(obj) {
for (var x in obj) {
if (obj.hasOwnProperty(x)) {
var obj2 = obj[x];
for (var x in obj2) {
if (obj2.hasOwnProperty(x)) {
$('#meta').html('Title: ' + obj2[x][0].value);
}
}
}
}
});
Конечно, вы можете добавлять условные выражения в for
циклы, если вы знаете немного больше информации о пути, который вам нужно пройти:
$.getJSON('rdfjson.json', function(obj) {
for (var x in obj) {
// if you know you're looking for a key that begins with "http://"
if (obj.hasOwnProperty(x) && x.indexOf("http://") === 0) {
var obj2 = obj[x];
for (var x in obj2) {
// Check that the value is an array of at least length 1, and whose 1st value has the property "value".
if (obj2.hasOwnProperty(x) && obj2[x] instanceof Array && obj2[x].length > 0 && obj2[x][0].value) {
$('#meta').html('Title: ' + obj2[x][0].value);
}
}
}
}
});