json中增加转义字符“\“

在Java中,使用org.json.JSONObject时,将一个JSON对象转换为字符串并放入另一个对象会导致自动添加转义字符。而使用net.sf.json.JSONObject,无论是否转换为字符串,都会以JSON对象形式存储。

一、使用 org.json.JSONObject,将第一个json对象转string之后,塞到第二个对象中,会自动加上转义字符。

import org.json.JSONObject;

public class Test {

	public static void main(String[] args) throws Exception {
		
		JSONObject json = new JSONObject();
		json.put("name", "123");
		
		JSONObject json2 = new JSONObject();
		json2.put("name2", "456");
		json2.put("json", json.toString());// 这里会自动加上转义字符
		System.out.println(json2);
	}
}

 结果:{"json":"{\"name\":\"123\"}","name2":"456"}

二、若是用 net.sf.json.JSONObject,则无论这里 json2.put("json", json.toString()); 有没有转string,都会以json对象的形式。

import net.sf.json.JSONObject;

public class Test {

	public static void main(String[] args) throws Exception {
		
		JSONObject json = new JSONObject();
		json.put("name", "123");
		
		JSONObject json2 = new JSONObject();
		json2.put("name2", "456");
		json2.put("json", json);
		System.out.println(json2);
        
        json2.put("json", json.toString());
		System.out.println(json2);
	}
}

结果:{"name2":"456","json":{"name":"123"}}
{"name2":"456","json":{"name":"123"}}

### JSON 转义字符JSONJavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于客户端与服务器之间的数据传输。在 JSON 字符串中,某些特殊字符需要使用转义序列来表示,以确保字符串的完整性和可解析性。 以下是 JSON 中常用的转义字符及其含义: | 转义字符 | 含义 | |----------|------------------| | `\"` | 双引号 | | `\\` | 反斜杠 | | `\/` | 正斜杠 | | `\b` | 退格 | | `\f` | 换页 | | `\n` | 换行 | | `\r` | 回车 | | `\t` | 制表符 | | `\uXXXX` | Unicode 字符(XXXX 表示四位十六进制数) | 这些转义字符允许开发者在 JSON 字符串中安全地嵌入特殊字符,而不会破坏 JSON 的结构或导致语法错误。例如,在 Python 中将字典转换为 JSON 字符串时,双引号会被自动转义为 `\"`,以确保生成的字符串符合 JSON 格式要求[^1]。 --- ### 示例:Python 中的 JSON 转义处理 ```python import json data = { "message": "Hello \"World\"!\nThis is a test." } json_str = json.dumps(data) print(json_str) ``` 输出结果如下: ```json { "message": "Hello \"World\"!\nThis is a test." } ``` 在此示例中,`json.dumps()` 方法会自动处理字符串中的特殊字符,并将其转换为对应的 JSON 转义形式。 --- ### C# 中的 JSON 转义处理 在 C# 中,无论是使用 `System.Text.Json` 还是 `Newtonsoft.Json`,都会自动处理字符串中的特殊字符并进行适当的转义。例如: #### 使用 System.Text.Json: ```csharp using System; using System.Text.Json; public class Message { public string Content { get; set; } } class Program { static void Main() { var message = new Message { Content = "Hello \"World\"!\nThis is a test." }; string json = JsonSerializer.Serialize(message, new JsonSerializerOptions { WriteIndented = true }); Console.WriteLine(json); } } ``` 输出结果: ```json { "Content": "Hello \"World\"!\nThis is a test." } ``` #### 使用 Newtonsoft.Json: ```csharp using System; using Newtonsoft.Json; public class Message { public string Content { get; set; } } class Program { static void Main() { var message = new Message { Content = "Hello \"World\"!\nThis is a test." }; string json = JsonConvert.SerializeObject(message, Formatting.Indented); Console.WriteLine(json); } } ``` 输出结果相同: ```json { "Content": "Hello \"World\"!\nThis is a test." } ``` 上述代码展示了如何在 C# 中自动处理 JSON 字符串中的转义字符,确保数据在序列化后仍然保持原始语义。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值