JavaScript 动态获取 JSON 对象 Key 对应 Value 的三种方法
本文介绍在 JavaScript 中如何根据动态 Key 获取 JSON 对象对应的 Value 值。通过示例展示了三种常用方法:使用 eval 函数、遍历对象属性以及直接使用方括号语法 obj[key]。文章分析了直接通过点号访问动态 Key 的局限性,并推荐方括号法作为最简洁高效的解决方案,同时提供完整代码示例供参考。
JavaScript 动态获取 JSON Key 对应 Value 的三种方法
以下是具体的实现示例。
完整代码示例与接口数据处理
<script type="text/javascript">
getJson('age');
function getJson(key){
var jsonObj={"name":"傅红雪","age":"24","profession":"刺客"};
//1、使用eval方法
var eValue=eval('jsonObj.'+key);
alert(eValue);
//2、遍历Json串获取其属性
for(var item in jsonObj){
if(item==key){ //item 表示Json串中的属性,如'name'
var jValue=jsonObj[item];//key所对应的value
alert(jValue);
}
}
//3、直接获取
alert(jsonObj[''+key+'']);
}
</script>
通过上述三种方式,即可成功获取 JSON 对象中指定 Key 所对应的 Value 值。
利用 JavaScript 提取接口返回 JSON 数据中的 Key 和 Value。
在实际开发中,处理接口数据是常见需求。对于初学者而言,从复杂的 JSON 数据结构中提取所需信息可能颇具挑战。接下来,我们将结合具体的接口场景,演示如何准确提取其中的关键数据。
以下是一个模拟的接口数据示例,格式为 JSON:
模拟接口 JSON 数据结构
{
"month": {
"monthly": ["2018年4月", "2018年5月"]
},
"nameAndRateOperation": {
"济南华阳炭素有限公司": ["91.67", "91.67"],
"济南万瑞炭素有限责任公司": ["84", "84"],
"济南龙山炭素有限公司": ["85.71", "85.71"],
"德州欧莱恩永兴碳素有限公司": ["70", "80"],
"德州永兴碳素有限公司": ["90", "90"],
"德州乾海碳素有限公司": ["70", "75"],
"济南海川投资集团有限公司": ["81.25", "81.25"],
"济南汇丰炭素有限公司": ["86", "86"],
"山东金利达碳素有限公司": ["86.68", "80"],
"济南澳海炭素有限公司": ["85", "85"]
},
"nameAndYield": {
"济南华阳炭素有限公司": ["1.2", "1.2"],
"济南万瑞炭素有限责任公司": ["4", "4"],
"济南龙山炭素有限公司": ["2.4", "2.4"],
"德州欧莱恩永兴碳素有限公司": ["0.8", "1"],
"德州永兴碳素有限公司": ["0.67", "0.5"],
"德州乾海碳素有限公司": ["0.2", "0.25"],
"济南海川投资集团有限公司": ["1.6", "1.6"],
"济南汇丰炭素有限公司": ["0.8", "0.8"],
"山东金利达碳素有限公司": ["2", "2.5"],
"济南澳海炭素有限公司": ["4.33", "4.5"]
},
"nameAndDateTime": {
"济南华阳炭素有限公司": ["2018年4月", "2018年5月"],
"济南万瑞炭素有限责任公司": ["2018年4月", "2018年5月"],
"济南龙山炭素有限公司": ["2018年4月", "2018年5月"],
"德州欧莱恩永兴碳素有限公司": ["2018年4月", "2018年5月"],
"德州永兴碳素有限公司": ["2018年4月", "2018年5月"],
"德州乾海碳素有限公司": ["2018年4月", "2018年5月"],
"济南海川投资集团有限公司": ["2018年4月", "2018年5月"],
"济南汇丰炭素有限公司": ["2018年4月", "2018年5月"],
"山东金利达碳素有限公司": ["2018年4月", "2018年5月"],
"济南澳海炭素有限公司": ["2018年4月", "2018年5月"]
},
"regionAndCompany": {
"华东": ["德州欧莱恩永兴碳素有限公司", "德州乾海碳素有限公司", "德州永兴碳素有限公司", "山东金利达碳素有限公司", "济南澳海炭素有限公司", "济南海川投资集团有限公司", "济南华阳炭素有限公司", "济南汇丰炭素有限公司", "济南龙山炭素有限公司", "济南万瑞炭素有限责任公司"]
},
"nameAndCapacity": {
"济南华阳炭素有限公司": ["6", "6"],
"济南万瑞炭素有限责任公司": ["5", "5"],
"济南龙山炭素有限公司": ["7", "7"],
"德州欧莱恩永兴碳素有限公司": ["30", "30"],
"德州永兴碳素有限公司": ["20", "20"],
"德州乾海碳素有限公司": ["20", "20"],
"济南海川投资集团有限公司": ["8", "8"],
"济南汇丰炭素有限公司": ["10", "10"],
"山东金利达碳素有限公司": ["15", "15"],
"济南澳海炭素有限公司": ["10", "10"]
},
"storageWithCompany": {
"济南华阳炭素有限公司": ["0.8", "0.8"],
"济南万瑞炭素有限责任公司": ["3.2", "3.2"],
"济南龙山炭素有限公司": ["2.2", "2.2"],
"德州欧莱恩永兴碳素有限公司": ["1.2", "1.2"],
"德州永兴碳素有限公司": ["0.5", "0.5"],
"德州乾海碳素有限公司": ["0.15", "0.15"],
"济南海川投资集团有限公司": ["1", "1"],
"济南汇丰炭素有限公司": ["0.5", "1"],
"山东金利达碳素有限公司": ["1.5", "1.5"],
"济南澳海炭素有限公司": ["2.5", "2.5"]
}
}
json数据
对应的获取代码如下:
提取地区与产能数据的代码实现
//取出来所有的地区:华南华北....
for (var key in data.regionAndCompany) {
region.push(key);
}
// console.log(region)
//接口取出来的仓储的数组
for (key in data.storageWithCompany) {
storageWithCompany.push(data.storageWithCompany[key])
}
// console.log(storageWithCompany)
// //接口取出来的产能的数组
// for(key in data.nameAndCapacity){
// capacity.push(data.nameAndCapacity[key])
// }
// // console.log(capacity)
//接口取出来的开工率的数组
for (key in data.nameAndRateOperation) {
rateOperation.push(data.nameAndRateOperation[key])
}
// console.log(rateOperation)
//全部的公司名字
for (key in data.nameAndRateOperation) {
companyRateOperation.push(key);
}
// console.log(companyRateOperation)
//全部的时间数据,二维数组
for (var key in data.nameAndDateTime) {
date.push(data.nameAndDateTime[key])
}
// console.log(date)
//全部的产量数组,二维,每个公司的产量是一个数组
for (var key in data.nameAndYield) {
yield.push(data.nameAndYield[key])
}
// console.log(yield)
此外,这里还补充一种网络上常见的处理方式。
在 JavaScript 中获取 Object 类型键值对的通用方法。
近期遇到一个具体需求:
var obj = {"name1":"张三","name2":"李四"}; var key = "name1"; var value = obj.key;//得到了"undefined" value = obj.name1;//得到了"张三"
我的初衷是动态赋值 Key,进而获取该 Key 对应的 Value。然而,直接通过 `obj.key` 访问行不通,因为 JavaScript 引擎会将其解析为查找 obj 对象下名为 "key" 的属性,而非动态变量的值,因此返回 undefined。 为此,我尝试利用 JavaScript 遍历对象属性的机制来解决:
遍历对象属性的辅助函数
function printObject(obj){
//obj = {"cid":"C0","ctext":"区县"};
var temp = "";
for(var i in obj){//用javascript的for/in循环遍历对象的属性
temp += i+":"+obj[i]+"\n";
}
alert(temp);//结果:cid:C0 \n ctext:区县
}
通过这种方式,可以清晰地区分并获取对象中的 Key 和 Value。 回到最初的问题:如何动态赋值 Key,并通过类似 `obj.key` 的形式获取对应的 Value? 从上述 `printObject` 函数的实现中可以得到提示,即使用 `obj[key]` 的语法。Key 可以是动态变量,这便解决了前述问题。 另外,还有一种替代方案:使用 `eval("obj."+key)`。
总结要点如下:
在 JavaScript 中,根据动态 Key 获取对象对应 Value 主要有两种有效方法:
一、var key = "name1";var value = obj[key]; 二、var key = "name1";var value = eval("obj."+key);
以上关于 JavaScript 获取 JSON 中 Key 对应 Value 的简单方法分享完毕,希望能为读者提供参考与帮助,欢迎支持本站更多内容。
JS中将数组和对象混合组装为JSON字符串
2026-11-05 16:41:42
JS运算符优先级与结合性的区别是什么?
2026-11-05 13:22:02
JS Map怎么只遍历Key或Value
2026-11-05 13:00:36
D3.js 与 ECharts 选型对比:灵活性 vs 开发效率
2026-11-05 09:45:01
为什么JS中typeof []返回object:数组类型检测误区解析
2026-11-04 19:50:47
