如何从序列化数组中获取数据?

如何从序列化数组中获取数据?

问题描述:

请帮我打印控制台的值和字段“昵称”的键。这里是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 2014-10-11 15:08:17

+0

对不起。字段名称“昵称” – dert 2014-10-11 15:16:57

+1

@dert:您需要做的第一件事是将您的JSON解析为JavaScript对象'var parsed = JSON.parse(json_data)'。然后获取结果,并像正常的Array一样迭代它。 'for(var i = 0; i 2014-10-11 15:24:04

如果要打印索引和昵称,考虑及如何使用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: Антон Чех 

您是否期望?

你在问题中出现的数组是not serialized。此外username在给定数组内没有任何对象的字段。

如果你的意思是每个fields对象中的字段other,你可以检索使用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数据,如问题中所述。但是,您还要抽取每个对象,将其序列化,然后在解压缩它的属性之前解析它。这对我来说没有多大意义。 – 2014-10-11 15:22:16

+0

@squint:你说得对,stringify/parse在这里是无稽之谈。编辑答案。问题标题中的'serialized'一词被误导了。 – KooiInc 2014-10-11 15:29:18