怎么获取JSON的值
在数据交互日益频繁的今天,JSON(JavaScript Object Notation)已成为轻量级数据交换的主流格式,无论是前端开发中接收后端接口数据,还是后端处理配置信息,获取JSON中的值都是基础且关键的操作,本文将从JSON的基本结构入手,结合不同场景,详细讲解如何获取JSON的值,涵盖原生JavaScript、Python及在线工具等多种方法,助你轻松这一技能。
先搞懂:JSON的基本结构
要获取JSON的值,首先要明确它的数据结构,JSON本质上是一种键值对(Key-Value)的集合,主要包含两种结构:
对象(Object):用 表示,类似Python中的字典或JavaScript中的对象
内部由“键(key): 值(value)”对组成,键必须是字符串(可加双引号或单引号,但通常用双引号),值可以是字符串、数字、布尔值、数组、对象甚至null,多个键值对之间用逗号分隔。
示例:
{
"name": "张三",
"age": 25,
"isStudent": false,
"courses": ["数学", "英语"],
"address": {
"city": "北京",
"district": "海淀区"
}
}
数组(Array):用 [] 表示,类似Python中的列表或JavaScript中的数组
内部按顺序存储多个值,值可以是任意类型(包括对象、数组等),值之间用逗号分隔。
示例:
[
{"id": 1, "product": "手机", "price": 3999},
{"id": 2, "product": "电脑", "price": 7999},
{"id": 3, "product": "平板", "price": 2999}
]
核心场景:获取JSON对象的值
假设我们有一个JSON对象(如上面“对象”示例中的数据),常用以下方法获取其值:
方法1:点语法()—— 适用于键名是合法标识符的情况
如果键名是合法的JavaScript标识符(不含空格、特殊字符,不以数字开头),可直接通过“对象.键名”获取值。
示例代码:
// 假设jsonData是已解析的JSON对象
const jsonData = {
"name": "张三",
"age": 25,
"isStudent": false,
"courses": ["数学", "英语"],
"address": {
"city": "北京",
"district": "海淀区"
}
};
// 获取简单类型的值
console.log(jsonData.name); // 输出: 张三
console.log(jsonData.age); // 输出: 25
console.log(jsonData.isStudent); // 输出: false
// 获取数组
console.log(jsonData.courses); // 输出: ["数学", "英语"]
console.log(jsonData.courses[0]); // 输出: 数学(数组通过索引访问)
// 获取嵌套对象
console.log(jsonData.address.city); // 输出: 北京
方法2:方括号语法([])—— 适用于键名含特殊字符或动态键名的情况
如果键名包含空格、连字符等特殊字符(如 "user-name"),或键名存储在变量中(动态键名),需用["键名"]形式访问。
示例代码:
const jsonData = {
"user-name": "李四",
"user age": 30,
"contact": {
"phone-number": "13812345678"
}
};
// 键名含特殊字符,必须用方括号
console.log(jsonData["user-name"]); // 输出: 李四
console.log(jsonData["user age"]); // 输出: 30
// 动态键名(键名存于变量)
const key = "phone-number";
console.log(jsonData.contact[key]); // 输出: 13812345678
方法3:循环遍历键值对 —— 适用于需获取所有值或动态处理键的情况
如果需要遍历JSON对象的所有键值对(如打印所有信息或筛选特定键),可使用for...in循环或Object.keys()+forEach。
示例代码:
const jsonData = {
"name": "张三",
"age": 25,
"city": "北京"
};
// for...in循环(遍历可枚举属性)
for (let key in jsonData) {
if (jsonData.hasOwnProperty(key)) { // 排除原型链上的属性
console.log(`${key}: ${jsonData[key]}`);
}
}
// 输出:
// name: 张三
// age: 25
// city: 北京
// Object.keys()获取所有键,再用forEach遍历
Object.keys(jsonData).forEach(key => {
console.log(`${key} -> ${jsonData[key]}`);
});
进阶场景:获取JSON数组的值
JSON数组常用于存储列表数据(如用户列表、商品列表),获取其值主要通过索引访问,或结合循环/高阶方法处理。
通过索引获取单个值
数组元素从索引0开始,通过数组[索引]直接访问。
示例代码:
const jsonArray = [
{"id": 1, "product": "手机", "price": 3999},
{"id": 2, "product": "电脑", "price": 7999},
{"id": 3, "product": "平板", "price": 2999}
];
// 获取第一个元素
console.log(jsonArray[0]); // 输出: {"id": 1, "product": "手机", "price": 3999}
// 获取第一个元素的特定属性
console.log(jsonArray[0].product); // 输出: 手机
console.log(jsonArray[0]["price"]); // 输出: 3999
循环遍历数组 —— 适用于处理所有元素
使用for循环、forEach、map等方法遍历数组,获取每个元素的值。
示例代码:
const jsonArray = [
{"id": 1, "product": "手机", "price": 3999},
{"id": 2, "product": "电脑", "price": 7999},
{"id": 3, "product": "平板", "price": 2999}
];
// for循环(传统方式)
for (let i = 0; i < jsonArray.length; i++) {
const item = jsonArray[i];
console.log(`商品ID: ${item.id}, 名称: ${item.product}, 价格: ${item.price}`);
}
// forEach(更简洁的遍历方式)
jsonArray.forEach(item => {
console.log(`${item.product}的价格是${item.price}元`);
});
// map(提取特定值,返回新数组)
const productNames = jsonArray.map(item => item.product);
console.log(productNames); // 输出: ["手机", "电脑", "平板"]
数组方法筛选/查找值 —— 适用于条件查询
通过filter(筛选符合条件的元素)、find(查找第一个符合条件的元素)等方法,精准获取目标值。
示例代码:
const jsonArray = [
{"id": 1, "product": "手机", "price": 3999},
{"id": 2, "product": "电脑", "price": 7999},
{"id": 3, "product": "平板", "price": 2999}
];
// filter:查找价格低于5000的商品
const cheapProducts = jsonArray.filter(item => item.price < 5000);
console.log(cheapProducts);
// 输出: [{"id": 1, "product": "手机", "price": 3999}, {"id": 3, "product": "平板", "price": 2999}]
// find:查找名称为“电脑”的商品
const computer = jsonArray.find(item => item.product === "电脑");
console.log(computer); // 输出: {"id": 2, "product": "电脑", "price": 7999}
不同语言中的JSON值获取(Python示例)
除了JavaScript,Python也是处理JSON的常用语言,其核心库是json,获取JSON值的逻辑与JavaScript类似,但语法略有不同。
解析JSON字符串为Python字典
Python中需先用json.loads()将JSON字符串解析为字典(dict),再通过键访问值。
示例代码:
import json
# JSON字符串
json_str = '''
{
"name": "张三",
"age": 25,
"courses": ["数学", "英语"],
"address": {
"city": "北京",


还没有评论,来说两句吧...