Чтение объекта Javascript - PullRequest
       4

Чтение объекта Javascript

2 голосов
/ 10 декабря 2010

У меня следующий код в javascript

var result = {
    'org.apache.struts' : '4567ty5y7u8j89hjk789',
    'firstName' : 'Thorpe',
    'surName' : 'Obazee'
}

Когда я пытаюсь прочитать результат:

// this works
sys.puts(result.firstName) // returns Thorpe
sys.puts(result.surName) // returns Obazee

Проблема возникает, когда я читаю другое свойство

sys.puts(result.org.apache.struts) // return an error

Ошибка: ожидаемая ошибка 'TypeError: Невозможно прочитать свойство' apache 'из неопределенного

Как мне прочитать это, чтобы получить доступ к информации, которую я поместил?

Ответы [ 4 ]

9 голосов
/ 10 декабря 2010

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

result["org.apache.struts"]

Если вы хотите добавить дополнительные уровни к вашему объекту, чтобы вы могли использовать точечную запись, вам нужно объявить другой объект для каждого уровня, например ::

var result = {
    org: { apache: { struts: '4567ty5y7u8j89hjk789' } },
    firstName: 'Thorpe',
    surName: 'Obazee'
}

alert(result.org.apache.struts);
3 голосов
/ 10 декабря 2010

Проблема в том, что вы добавляете его как целый ключ вместо другого объекта, обращаетесь к нему как result['org.apache.struts'].

Или вы можете изменить способ создания результата:

var result = {
    org : {
        apache : {
            struts : '4567ty5y7u8j89hjk789'
        }
    }
    'org.apache.struts' = '4567ty5y7u8j89hjk789',
    'firstName' = 'Thorpe',
    'surName' = 'Obazee'
}
2 голосов
/ 10 декабря 2010

Вы должны будете использовать ':' между метками и значениями объекта и также определять 'org.apache' как объект.Например:

var result = {
    org: {apache: {struts: '4567ty5y7u8j89hjk789'}},
    firstName: 'Thorpe',
    surName: 'Obazee'
}

Если вы хотите, чтобы мы использовали * org.apache.struts как реальный ярлык, ответ Энди Е. - это решение.

2 голосов
/ 10 декабря 2010

Проблема в том, что в вашей переменной есть точки.Я предполагаю, что javascript требует интерпретировать это как вложенные объекты, которые на самом деле не существуют.Итак, используйте

result["org.apache.struts"]

, чтобы получить значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...