怎么把数据转成JSON格式?一篇搞定常见场景转换方法
在开发中,JSON(JavaScript Object Notation)因其轻量级、易读、易解析的特性,已成为前后端数据交互、配置文件存储、API响应等场景的主流数据格式,无论是编程语言中的对象/字典、数据库查询结果,还是Excel表格、CSV文件,我们常常需要将其转换为JSON格式,本文将分场景详细介绍“怎么转成JSON数据”,覆盖编程语言、办公软件、数据库等常见工具,让你轻松应对转换需求。
编程语言中:原生方法与库函数直接转换
编程语言是处理数据转换的核心场景,多数语言都内置了JSON序列化(将数据转为JSON字符串)和反序列化(将JSON字符串转为数据结构)的方法。
Python:json模块一键转换
Python的json模块是处理JSON的利器,支持将字典、列表等数据结构转为JSON字符串,也能反向解析。
-
字典/列表转JSON字符串:
使用json.dumps()(dumps = dump string,"序列化为字符串"),示例:import json # 字典转JSON data_dict = {"name": "张三", "age": 25, "hobbies": ["reading", "coding"]} json_str = json.dumps(data_dict, ensure_ascii=False, indent=2) # ensure_ascii=False支持中文,indent=2格式化缩进 print(json_str) # 输出: # { # "name": "张三", # "age": 25, # "hobbies": ["reading", "coding"] # } -
自定义对象转JSON:
若要将自定义类的对象转为JSON,需实现default参数处理对象类型,class User: def __init__(self, name, age): self.name = name self.age = age user = User("李四", 30) json_str = json.dumps(user, default=lambda obj: obj.__dict__, indent=2) # 通过__dict__获取对象属性字典 print(json_str) # 输出: # { # "name": "李四", # "age": 30 # }
JavaScript:JSON.stringify()与JSON.parse()
JavaScript作为JSON的“起源语言”,转换方法最为简洁。
-
对象/数组转JSON字符串:
使用JSON.stringify(),支持格式化参数(space):const data = { name: "王五", age: 28, skills: ["JavaScript", "Python"] }; const jsonStr = JSON.stringify(data, null, 2); // 第2个参数用于过滤属性,null不过滤,2为缩进空格数 console.log(jsonStr); // 输出: // { // "name": "王五", // "age": 28, // "skills": [ // "JavaScript", // "Python" // ] // } -
JSON字符串转对象/数组:
使用JSON.parse(),const obj = JSON.parse(jsonStr); console.log(obj.name); // 输出:王五
Java:Gson/Jackson库高效转换
Java原生处理JSON较繁琐,推荐使用第三方库(如Gson、Jackson),这里以Gson为例:
-
添加依赖(Maven):
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency> -
对象转JSON字符串:
import com.google.gson.Gson; public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } } public class Main { public static void main(String[] args) { User user = new User("赵六", 35); Gson gson = new Gson(); String jsonStr = gson.toJson(user); System.out.println(jsonStr); // 输出:{"name":"赵六","age":35} } }
C#:JsonConvert(Newtonsoft.Json)
C#中常用Newtonsoft.Json库(需安装Newtonsoft.Json NuGet包):
using Newtonsoft.Json;
public class User
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
var user = new User { Name = "钱七", Age = 40 };
string jsonStr = JsonConvert.SerializeObject(user, Formatting.Indented); // Formatting.Indented格式化
Console.WriteLine(jsonStr);
// 输出:
// {
// "Name": "钱七",
// "Age": 40
// }
}
}
办公软件中:Excel/CSV轻松导出JSON
日常工作中,我们常需将Excel表格或CSV文件转为JSON,方便数据导入系统或前端调用。
Excel:手动转换或插件辅助
-
手动方法(适合少量数据):
- 选中Excel数据区域(含表头),按
Ctrl+C复制; - 打开在线转换工具(如Excel to JSON)或VS Code插件(如
Excel to JSON),粘贴数据即可生成JSON; - 若需格式化,可用在线JSON格式化工具(如JSON Formatter)调整。
- 选中Excel数据区域(含表头),按
-
插件方法(适合批量数据):
- Excel插件:安装“Excel to JSON”插件,点击“Convert”直接生成JSON文件;
- VS Code:安装
Excel to JSON插件,右键Excel文件选择“Convert to JSON”,支持自定义JSON结构(如数组格式、嵌套对象)。
CSV:命令行或工具快速转换
CSV(逗号分隔值)转JSON更简单,可通过命令行工具或在线实现:
-
Python脚本(适合自动化处理):
import csv import json # 读取CSV文件 with open('data.csv', 'r', encoding='utf-8') as csv_file: csv_reader = csv.DictReader(csv_file) # 以第一行为表头,生成字典列表 data = list(csv_reader) # 转为JSON并保存 with open('data.json', 'w', encoding='utf-8') as json_file: json.dump(data, json_file, ensure_ascii=False, indent=2) # 假设data.csv内容为: # name,age,city # 周八,25,北京 # 吴九,30,上海 # 输出data.json为: # [ # { # "name": "周八", # "age": "25", # "city": "北京" # }, # { # "name": "吴九", # "age": "30", # "city": "上海" # } # ] -
在线工具:访问CSV to JSON,上传CSV文件即可在线转换,支持预览和下载。
数据库中:查询结果直接转为JSON
数据库查询结果(如MySQL、PostgreSQL、MongoDB)常需转为JSON返回给前端,主流数据库都内置了JSON转换函数。
MySQL:JSON_ARRAY与JSON_OBJECT
MySQL 5.7+支持JSON函数,可将查询结果转为JSON格式:
-- 查询用户表并转为JSON数组
SELECT
JSON_ARRAYAGG(
JSON_OBJECT(
'id', id,
'name', name,
'age', age
)
) AS users
FROM users
WHERE age > 20;
-- 假设users表数据为:
-- id | name | age
-- 1 | 张三 | 25
-- 2 | 李四 | 30
-- 输出:
-- users
-- [{"id": 1, "name": "张三", "age": 25}, {"id": 2, "name": "李四", "age": 30}]
PostgreSQL:row_to_json函数
PostgreSQL提供row_to_json,可将单行转为JSON,array_to_json可将多行转为JSON数组:
-- 单行转JSON SELECT row_to_json(t) AS



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