我想获得以下结构,并且能够修改相应密钥的用户数组,并使用json响应发送它。
var data = ["A": [user1,user6,user9], "B": [user2], "E": [user3], "S": [user10], "Z": [user7], "J": [user8]]
data
在jsonObject
内向客户端(Swift)发送时应采用此格式:[String : [User]]
这是我到目前为止所尝试的,
var dict = [];
var jsonObject = {};
User.find({}, function(err, users) {
if (err) {
return res.status(500).send(err);
} else {
users.forEach(function(user) {
dict[user.name.substring(0, 1)] = []
dict[user.name.substring(0, 1)].push(user)
});
}
jsonObject["key"] = dict
return res.status(200).json(jsonObject);
});
虽然console.log(jsonObject)
正确打印,但json响应是:
{
"key": []
}
在客户端(Swift),我想尝试制作这样的东西。但它会给出错误。
.responseJSON(completionHandler: { response -> Void in
if let jsonObj = response.result.value {
if let result = jsonObj["key"] as? [String: [User]]
{
var dict : [String: [User]] = result
print(dict)
}
}
})
请帮助吗?
答案 0 :(得分:0)
我试过这种方法。似乎足以满足您对数据的需求。
var _ = require('lodash');
User.find({}, function (err, users) {
if (err) {
return res.status(500).send(err);
}
var data = {};
_.each(users, (user) => {
var key = user.name.substring(0, 1);
var value = data[key];
if (_.isUndefined(value)) {
value = [];
}
value.push(user);
data[key] = value;
});
return res.status(200).send({
key: data
});
});
我用var users = [{name: 'Andrew'}, {name: 'Blake'}, {name: Cathy'}, {name: 'Anderson'}, {name: 'Bresnan'}];