JSON转换为JavaScript中的字典
JSON to dictionary in JavaScript?
在我的JS代码中,我需要将服务器的JSON响应转换为字典,这样我就可以通过关键字名称访问它们。情况如下:
比方说,这是来自我的服务器的JSON响应:
{
'status': 'success',
'employees' : [
{ 'id': 12, 'name': 'Tom', 'department': 'finance' },
{ 'id': 34, 'name': 'Dick', 'department': 'admin' },
{ 'id': 56, 'name': 'Harry', 'department': 'marketing' }
]
}
现在我需要的是创建一个字典变量,这样键是id,值是(比如)名称,这样我就可以访问它们variable.id或variable[id_value](从循环中)。
如何做到这一点?非常感谢你的帮助。
谢谢Vivek Ragunathan
假设您修复了这个问题,并且JSON已经被检索到字符串变量jsonResult
中,那么您需要使用JSON.parse():来解析它以获得对象
var result = JSON.parse(jsonResult);
你可以从那里构建一个字典:
var employees = {};
for (var i = 0, emp; i < result.employees.length; i++) {
emp = result.employees[i];
employees[ emp.id ] = emp;
}
console.log(employees[56].name); // logs "Harry"
console.log(employees[56].department); // logs "marketing"
你说"这个值就是(比如)名字"——如果你不需要department
的值,那么在上面的for循环中,说employees[ emp.id ] = emp.name;
,然后(显然)employees[56]
会直接给你"Harry"。
演示:http://jsfiddle.net/RnmFn/1/
好吧,假设JSON已经被解析为Object
:
var data = JSON.parse('{"status":"success","employees":[{},{},{}]}'); // abridged
您可以在data.employees
上循环以构建"字典"(Object
):
var employees = {};
for (var i = 0; i < data.employees.length; i++) {
employees[data.employees[i].id] = data.employees[i];
}
然后,给定一个employeeId
:
var employee = employees[employeeId];
您可以编写一个javascript函数,从员工列表中按id获取员工:
function getEmployee(id, employees) {
for (var i = 0; i < employees.length; i++) {
var employee = employees[i];
if (employee.id === id) {
return employee;
}
}
return null;
}
然后在将JSON字符串解析回javascript对象后,对从服务器获得的响应使用此函数:
var json = 'the JSON string you got from the server';
var obj = JSON.parse(json);
var employees = obj.employees;
var employee = getEmployee(34, employees);
if (employee != null) {
alert(employee.name);
}
类似的操作允许您在一行中创建一个字典,并指定所使用的键和值,或者至少指定值成为整个对象的键。
function toDictionary(items, key, value) {
var dictionary = {};
if (items) {
for (var i = 0; i < items.length; i++) {
var item = items[i];
dictionary[key(item)] = value ? value(item) : item;
}
}
return dictionary;
}
示例用法:
var dictionary = toDictionary(result.employees, function (record) { return record.id; });
var employee = dictionary[34];
if (employee) {
// do something with employee object
}
相关文章:
- javascript结合了数组和字典
- 用Javascript/PHP创建字典
- 用JavaScript中的循环传递哈希表/字典
- 在JavaScript中,is't Object Literal Notation只是字典的另一个名称
- 将JavaScript字典转换为JSON格式
- 为什么可以't使用myDict.123语法的JavaScript字典键以数字开头
- 从iOS向javascript函数传递字典数组
- 解析Python字典中的javaScript数组
- 将元素添加到javascript中"字典“;大堆
- 用Javascript从一个大的2D数组中编程创建一个字典
- 在JavaScript中,从一组数组递归地构建一个字典/嵌套对象
- 任何已知的javascript/php字典,如'字1''单词2'
- 如何在javascript字典中使用关键字查找值
- 有没有办法在应用程序脚本中使用JavaScript为对象创建方法字典
- 从 JavaScript 向 C# 字典中添加项
- "尝试传递到 Jinja2/JavaScript 字典时出现
- 如何在 Python 和 JavaScript 中以相同的方式散列“json”嵌套字典
- 将字典数组传递给 Javascript
- 对从字典 JavaScript 对象检索的对象调用方法
- 从字典 javascript 中获取所有最小值