如何将一个对象转换为 JSON 字符串?
在现代编程中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端数据交互、配置文件存储等场景,将编程语言中的对象(如 Python 的字典、Java 的对象、JavaScript 的对象等)转换为 JSON 字符串是一项常见操作,本文将介绍在不同编程语言中如何将对象转换为 JSON 字符串,并提供示例代码。
什么是 JSON?
JSON 是一种基于文本的数据格式,易于人类阅读和编写,也易于机器解析和生成,它通常以键值对的形式存储数据,类似于字典或哈希表。
{
"name": "Alice",
"age": 25,
"isStudent": true
}
在不同语言中将对象转换为 JSON 字符串
1 Python
Python 提供了 json 模块,可以方便地将字典(dict)或其他可序列化对象转换为 JSON 字符串。
示例代码
import json
# 定义一个字典(Python 的对象)
person = {
"name": "Bob",
"age": 30,
"isStudent": False,
"courses": ["Math", "Science"]
}
# 使用 json.dumps() 转换为 JSON 字符串
json_str = json.dumps(person, indent=4) # indent=4 使 JSON 更易读
print(json_str)
输出
{
"name": "Bob",
"age": 30,
"isStudent": false,
"courses": [
"Math",
"Science"
]
}
注意事项
json.dumps()默认只能处理基本数据类型(如dict,list,str,int,float,bool,None)。- 如果对象包含自定义类实例,需要使用
default参数或__dict__方法进行转换。
2 JavaScript
JavaScript 原生提供了 JSON.stringify() 方法,可以将对象(Object)或数组(Array)转换为 JSON 字符串。
示例代码
// 定义一个 JavaScript 对象
const person = {
name: "Charlie",
age: 28,
isStudent: true,
courses: ["History", "Art"]
};
// 使用 JSON.stringify() 转换为 JSON 字符串
const jsonStr = JSON.stringify(person, null, 2); // 2 表示缩进 2 个空格
console.log(jsonStr);
输出
{
"name": "Charlie",
"age": 28,
"isStudent": true,
"courses": [
"History",
"Art"
]
}
注意事项
JSON.stringify()会忽略undefined、函数和 Symbol 类型的值。- 可以使用
replacer参数自定义转换逻辑。
3 Java
在 Java 中,可以使用 Jackson、Gson 或 org.json 等库将对象(POJO)转换为 JSON 字符串,这里以 Jackson 为例:
示例代码
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) throws Exception {
// 定义一个 Java 对象(POJO)
Person person = new Person("David", 35, false, new String[]{"Physics", "Chemistry"});
// 使用 Jackson 转换为 JSON 字符串
ObjectMapper objectMapper = new ObjectMapper();
String jsonStr = objectMapper.writeValueAsString(person);
System.out.println(jsonStr);
}
}
class Person {
private String name;
private int age;
private boolean isStudent;
private String[] courses;
public Person(String name, int age, boolean isStudent, String[] courses) {
this.name = name;
this.age = age;
this.isStudent = isStudent;
this.courses = courses;
}
// Getters and Setters(Jackson 需要)
public String getName() { return name; }
public int getAge() { return age; }
public boolean isStudent() { return isStudent; }
public String[] getCourses() { return courses; }
}
输出
{"name":"David","age":35,"isStudent":false,"courses":["Physics","Chemistry"]}
注意事项
- 需要添加
Jackson依赖(Maven/Gradle)。 - 对象必须有默认构造函数和 getter/setter 方法。
4 C#
在 C# 中,可以使用 System.Text.Json(.NET Core 3.0+)或 Newtonsoft.Json 将对象转换为 JSON 字符串,这里以 System.Text.Json 为例:
示例代码
using System;
using System.Text.Json;
public class Program
{
public static void Main()
{
// 定义一个 C# 对象
var person = new Person
{
Name = "Eve",
Age = 22,
IsStudent = true,
Courses = new[] { "Biology", "English" }
};
// 使用 System.Text.Json 转换为 JSON 字符串
string jsonStr = JsonSerializer.Serialize(person, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(jsonStr);
}
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public bool IsStudent { get; set; }
public string[] Courses { get; set; }
}
输出
{
"Name": "Eve",
"Age": 22,
"IsStudent": true,
"Courses": [
"Biology",
"English"
]
}
注意事项
System.Text.Json是 .NET Core 3.0+ 内置的库,无需额外安装。- 如果使用
Newtonsoft.Json,需要安装Newtonsoft.JsonNuGet 包。
| 语言 | 方法/库 | 示例 |
|---|---|---|
| Python | json.dumps() |
json.dumps(obj, indent=4) |
| JavaScript | JSON.stringify() |
JSON.stringify(obj, null, 2) |
| Java | Jackson / Gson |
objectMapper.writeValueAsString(obj) |
| C# | System.Text.Json / Newtonsoft.Json |
JsonSerializer.Serialize(obj) |
关键点
- Python 使用
json.dumps(),需确保对象是基本数据类型或可序列化的。 - JavaScript 使用
JSON.stringify(),可处理Object和Array。 - Java 需要第三方库(如
Jackson),对象必须有 getter/setter。 - C# 使用
System.Text.Json(推荐)或Newtonsoft.Json,对象属性需可序列化。
希望本文能帮助你理解如何在不同编程语言中将对象转换为 JSON 字符串!



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