2014-10-11 2 views
-2

Пожалуйста, помогите мне распечатать значения на консоли и клавиши для поля «nickname». Вот сериализованные массив данных в формате JSON:Как получить данные из сериализованного массива?

[ 
    {"fields": {"user_permissions": [], "nickname": "\u0418\u0432\u0430\u043d \u0422\u0443\u0440\u0433\u0435\u043d\u0435\u0432 \u0451\u043f\u0442\u0430", "groups": [], "avatar": "", "gender": 1, "skype": "dfsdf", "other": "zzzz", "phone": "2014-0921"}, "model": "app_accounts.userprofile_deferred_avatar_date_joined_email_fic679ed35161c7ba80f007b4235db5148", "pk": 4}, 
    {"fields": {"user_permissions": [], "nickname": "\u0410\u043d\u0442\u043e\u043d \u0427\u0435\u0445", "groups": [], "avatar": "", "gender": 2, "skype": "dfsdf", "other": "qqqqqq", "phone": "21"}, "model": "app_accounts.userprofile_deferred_avatar_date_joined_email_fic679ed35161c7ba80f007b4235db5148", "pk": 5} 
] 

Я хочу, чтобы результат будет что-то вроде этого:

0: zzzzzz 
1: qqqqqq 

Как я могу это сделать?

+0

Ваш json не имеет поля '' имя пользователя '' – hindmost

+0

извините. имена полей «nickname» – dert

+1

@dert: Первое, что вам нужно сделать, - разобрать JSON на объекты JavaScript «var parsed = JSON.parse (json_data)». Затем возьмите результат и повторите его как обычный массив. 'for (var i = 0; i

ответ

0

Если вы хотите напечатать индекс и ник, рассмотреть возможность использования Foreach:

var users = [ 
    {"fields": {"user_permissions": [], "nickname": "\u0418\u0432\u0430\u043d \u0422\u0443\u0440\u0433\u0435\u043d\u0435\u0432 \u0451\u043f\u0442\u0430", "groups": [], "avatar": "", "gender": 1, "skype": "dfsdf", "other": "zzzz", "phone": "2014-0921"}, "model": "app_accounts.userprofile_deferred_avatar_date_joined_email_fic679ed35161c7ba80f007b4235db5148", "pk": 4}, 
    {"fields": {"user_permissions": [], "nickname": "\u0410\u043d\u0442\u043e\u043d \u0427\u0435\u0445", "groups": [], "avatar": "", "gender": 2, "skype": "dfsdf", "other": "qqqqqq", "phone": "21"}, "model": "app_accounts.userprofile_deferred_avatar_date_joined_email_fic679ed35161c7ba80f007b4235db5148", "pk": 5} 
] 

users.forEach(function(users, index) {console.log(index + ': ' + users.fields.nickname);}); 

напечатает:

0: Иван Тургенев ёпта 
1: Антон Чех 

Вы ожидали этого?

1

массив, который вы представляете в вопросе not serialized. Кроме того, username Не является полем в каком-либо объекте в заданном массиве.

Если вы имеете в виду поле other в пределах каждого fields объекта, вы можете получить, что с помощью Array.map:

var usernames = [ 
    {"fields": {"user_permissions": [], "nickname": "\u0418\u0432\u0430\u043d \u0422\u0443\u0440\u0433\u0435\u043d\u0435\u0432 \u0451\u043f\u0442\u0430", "groups": [], "avatar": "", "gender": 1, "skype": "dfsdf", "other": "zzzz", "phone": "2014-0921"}, "model": "app_accounts.userprofile_deferred_avatar_date_joined_email_fic679ed35161c7ba80f007b4235db5148", "pk": 4}, 
    {"fields": {"user_permissions": [], "nickname": "\u0410\u043d\u0442\u043e\u043d \u0427\u0435\u0445", "groups": [], "avatar": "", "gender": 2, "skype": "dfsdf", "other": "qqqqqq", "phone": "21"}, "model": "app_accounts.userprofile_deferred_avatar_date_joined_email_fic679ed35161c7ba80f007b4235db5148", "pk": 5} 
].map(function (v) { return v.fields.other }); 
//=> usernames now: ["zzzz", "qqqqqq"] 

See also ...

+0

Я этого не понимаю. Во-первых, вы работаете с объектами JS, а не с сериализованными данными JSON, как описано в вопросе. Но вы также берете каждый объект, сериализируя его, а затем разбираете его, прежде чем извлекать его свойства. Это не имеет большого значения для меня. –

+0

@squint: вы правы, строчить/разбирать здесь ерунда. Отредактировал ответ. Я был введен в заблуждение термином «сериализован» в заголовке вопроса. – KooiInc