2015-08-06 3 views
0

Я пытаюсь получить некоторую информацию из моего объекта JSON и я получаю сообщение об ошибке на моей консоли, говоря:JSON объект из строки не возвращает строку

Uncaught TypeError: Cannot read property 'queue' of undefined". 

У меня есть этот JSON:

{ 
    "qmd_file": { 
     "queue": "rr7323-psp", 
     "name": "unicode", 
     "full_path": "/devl/data/queue‌​s/psp/rr7323/unicode", 
     "mtime": "2015-05-08T19:02:06.000-04:00" 
    } 
} 

Я хочу, чтобы получить имя очереди, которое является «rr7323-psp». Вот мой код:

function searchFile (qid, filename) { 
    var searchUrl = queue_web_services_base + "https://stackoverflow.com/q/v1/find.json?qgid=" 
       + encodeURIComponent(qid) + "&filename=" 
       + encodeURIComponent(filename); 
    var token = encodeURIComponent(window.bpub.authToken); 
    $.ajax({ 
    type: "GET", 
    url: searchUrl, 
    headers: {'Authorization' : 'Token token="' + token + '"'}, 
    success: function(json) { 
     var jsonString = JSON.stringify(json); 
     obj = JSON.parse(jsonString); 
     console.log(obj.qmd_file[1].queue); 
    } 
    }); 

    return searchUrl; 
} 

self.searchForFile = function() { 
    var queueGroup = prompt ("Please eneter Queue group" , "") 
    var fileName = prompt ("Please enter file name: " , "") 
    console.log(searchFile(queueGroup, fileName)); 
} 
+0

Можете ли вы поделиться примером того, как выглядит загрузка JSON? –

+1

Надеюсь, это то, о чем вы просите: {"qmd_file": {"queue": "rr7323-psp", "name": "unicode", "full_path": "/ devl/data/queues/psp/rr7323/unicode "," mtime ":" 2015-05-08T19: 02: 06.000-04: 00 "}} –

+0

Объект json выглядит так: Object {qmd_file: Object} qmd_file: Objectfull_path:"/devl/data/queues/psp/rr7323/unicode "mtime:" 2015-05-08T19: 02: 06.000-04: 00 "name:" unicode "queue:" rr7323-psp " –

ответ

1

Вы obj.qmd_file[1].queue, но qmd_file узел не является массивом. queue является прямым атрибутом потомка obj.qmd_file. Попробуйте obj.qmd_file.queue.

+0

Это сработало спасибо. –

1

Вы пытаетесь получить доступ к элементу очереди в JSON с помощью этого оператора: obj.qmd_file[1].queue. Этот код означает «получить свойство« queue »второго объекта в массиве« qmd_file »в объекте« obj ».

Однако в JSON, который вы отправили, «qmd_file» - это объект, а не массив. Попробуйте вместо этого используя этот код: obj.qmd_file.queue

+0

Это сработало спасибо. –

1

Вы можете взять его в качестве,

console.log(obj.qmd_file.queue); 

queue это свойство в объекте извлечённому, как obj.qmd_file и qmd_file, конечно, не является массивом.

+0

Это сработало спасибо. –

Смежные вопросы