千家信息网

特殊字符的json序列化有哪些

发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,这篇文章将为大家详细讲解有关特殊字符的json序列化有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先来看一段 golangpackage mainimport
千家信息网最后更新 2025年02月21日特殊字符的json序列化有哪些

这篇文章将为大家详细讲解有关特殊字符的json序列化有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

先来看一段 golang

package mainimport ( "encoding/json" "fmt")func main() { data := map[string]string{ "str0": "Hello, world", "str1": "<", "str2": ">", "str3": "&", } jsonStr, _ := json.Marshal(data) fmt.Println(string(jsonStr))}

输出结果

{"str0":"Hello, world","str1":"\u003c","str2":"\u003e","str3":"\u0026"}

先来段 rust 的

extern crate rustc_serialize;use rustc_serialize::json;use std::collections::HashMap;fn main(){ let mut data = HashMap::new(); data.insert("str0","Hello, world"); data.insert("str1","<"); data.insert("str2",">"); data.insert("str3","&"); println!("{}", json::encode(&data).unwrap());}}

结果

{"str0":"Hello, world","str2":">","str1":"<","str3":"&"}

再来看段 python 的

import jsondata = dict(str0='Hello, world',str1='<',str2='>',str3='&')print(json.dumps(data))

输出结果

{"str0": "Hello, world", "str1": "<", "str2": ">", "str3": "&"}

再看看java的

import org.json.simple.JSONObject;class JsonDemo{ public static void main(String[] args) { JSONObject obj = new JSONObject(); obj.put("str0", "Hello, world"); obj.put("str1", "<"); obj.put("str2", ">"); obj.put("str3", "&"); System.out.println(obj); }}

输出结果

{"str3":"&","str1":"<","str2":">","str0":"Hello, world"}

总结

可以看到 python 、 rust 和 java 对这4个字符串序列化结果几乎是相同的了(除了java序列化后顺序有微小变化外),golang明显对 < ,

> , & 进行了转义处理,看看文档怎么说的

// String values encode as JSON strings coerced to valid UTF-8, // replacing invalid bytes with the Unicode replacement rune. // The angle brackets "<" and ">" are escaped to "\u003c" and "\u003e" // to keep some browsers from misinterpreting JSON output as HTML. // Ampersand "&" is also escaped to "\u0026" for the same reason.

& 被转义是为了防止一些浏览器将JSON输出曲解为HTML,

而 < , > 被强制转义是因为golang认为这俩是无效字节(这点比较奇怪),

我如果技术栈都是golang还好说,如果跨语言跨部门合作一定需要注意这点(已踩坑)……

关于"特殊字符的json序列化有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

结果 序列 输出 字符 篇文章 转义 特殊 更多 先来 不错 实用 微小 明显 相同 内容 字符串 字节 技术 文档 文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 福田区科技互联网扶持 网络安全域名的访问限制不严格 苏州怎么代理阿里云服务器 浪潮音信服务器怎么进入 组宣部网络安全工作责任状 单位网络安全检查方案 网络安全工作是工作内容 bt和rt 网络安全 机房服务器维护与指导 现阶段网络技术概述 小学网络安全规则有哪些 中国互联网创新科技委员会 荥阳软件开发 学校应用的网络技术 软件开发文件输出模板 软件开发分项报价表 网络安全高级工程师年薪 互联网科技公司项目计划书 共亨服务器文件权限设置 tbc哪个服务器pvp环境好 无盘系统服务器硬盘要独立吗 网络硬盘软件开发 棋牌极速智能解码服务器码 自动更新显示无法连接服务器 大连松下电器软件开发裁员了吗 网络技术专升本可以报几个专业 泡沫危机软件开发 聊天软件开发交流qq群号 学校应用的网络技术 朝阳区网络软件开发质量保障
0