2015-09-20 2 views
0

У меня проблема с выходными значениями json, возвращаемыми неопределенными.JSON возвращает неопределенные значения

JSON:

[ { ID: 2, user: 'ngx.daniel', password: 'password', admin: 'F' } ] 

КОД:

console.log(res); 
res = JSON.stringify(res); 
console.log(res); 
var user = {}; 
user.user = res.user; 
user.password = res.password; 
user.admin = res.admin; 
console.log(user); 

ВЫВОД:

[ RowDataPacket { ID: 2, user: 'ngx.daniel', password: 'password', admin: 'F' } ] 
[ { ID: 2, user: 'ngx.daniel', password: 'password', admin: 'F' } ] 
{ user: undefined, password: undefined, admin: undefined } 
+3

' JSON.stringify' возвращает строку. Почему вы ожидаете, что строка будет иметь свойство 'user'? – SLaks

+1

@ turbopipp: Это не имеет значения. – SLaks

+0

JSON любит строки внутри объектов, из того, что я помню – turbopipp

ответ

3

Несколько вещей. Если это ваш json:

[ RowDataPacket { ID: 2, user: 'ngx.daniel', password: 'password', admin: 'F' } ] 

Вам не нужно его урезать. Когда вы его стягиваете, вы превращаете свой объект в строку. вы затем пытаетесь получить доступ к атрибутам строки, которых у нее нет.
1 - Удалить строку
2 - Это массив, возвращаемый с помощью объекта RowPacketData, что также недействительно json.
3 - Чтобы получить доступ к объекту в массиве, вам необходимо сначала получить доступ к индексу. Так оно и должно быть действительно что-то вроде

(если res = [ { ID: 2, user: 'ngx.daniel', password: '[email protected]#', admin: 'F' }])

var user = {}; 
user.user = res[0].user; 
user.password = res[0].password; 
user.admin = res[0].admin; 
0

Ответ, по-видимому состоит из нескольких элементов (RowDataPackets). Вы можете получить первое с помощью индекса 0. И нет никакой необходимости stringify ответа:

console.log(res); 
var user = {}; 
user.user = res[0].user; 
user.password = res[0].password; 
user.admin = res[0].admin; 
console.log(user); 

который печатает

объекта {пользователя = "ngx.daniel", пароль = "Root _ $! @ # ", admin =" F "}

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