java json u0026_特殊字符的json序列化

先来看一段golang

package main

import (

"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":"

再来看段python的

import json

data = dict(str0='Hello, world',str1='',str3='&')

print(json.dumps(data))

输出结果

{"str0": "Hello, world", "str1": "", "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":"","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 "" 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还好说,如果跨语言跨部门合作一定需要注意这点(已踩坑)……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能家居(3)智能交互的竞品分析

智能家居系统与产品的交互方式&#xff0c;早已从物理按键、遥控操作发展为以触摸面板手机APP作为主要的交互方式&#xff0c;并已经实现了语音交互、生物识别等新技术的导入&#xff0c;未来可能会流行基于视觉的交互方式、基于机器学习的无感交互方式。融合这些交互方式的多模…

java爬取单张图片

我们经常需要在网页上获取一些图片&#xff0c;有的图片我们是可以直接下载使用&#xff0c;有的图片需要我们登陆账号甚至付费下载&#xff0c;所以在此我写了一个使用Java爬取任意网页单张图片的爬虫。 代码解析 1.图片的网络位置 2.进行访问和下载 3.建立本地存储位置 效果…

四川大学java语言程序设计_四川大学2014年计算机(软件)学院Java语言设计期末考试B卷程序.doc...

四川大学期末考试试题(闭卷)(2014-2015学年第2学期)课程号&#xff1a; 课程名称&#xff1a; Java语言程序设计(B 卷)任课教师&#xff1a;适用专业年级&#xff1a; 学号&#xff1a; 姓名&#xff1a;考试须知四川大学学生参加由学校组织或由学校承办的各级各类考试&#xf…

LaTex实战笔记 3-宏包与控制命令

1. LaTeX 命令的基本架构 LaTex 排版系统对于格式控制、公式编辑比 Word 更加灵活、准确。 Tex 环境中&#xff0c;字符、图片等各种文档内容都装在不同的盒子&#xff08;box&#xff09;容器内。这些盒子根据 Tex/Latex 的默认规则和控制命令组合为更大的盒子。字符组合为单…

【OpenCV 例程200篇】201. 图像的颜色空间转换

OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换&#xff08;cv.LUT&#xff09; 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 文章目录【youcans 的 OpenCV 例程200篇】201. 图像的颜色空间转换图像的色彩空间基础图像的…

java 三大特性理解_java 三大特性--封装、继承和多态理解

java 三大特性--封装、继承和多态理解封装/*** 所谓封装&#xff0c;就是将对象具有的成员变量和成员函数包装和隐藏起来&#xff0c;让外界无法直接使用&#xff0c;* 被封装的成员只能通过某些特定的方式才能访问。* 实现封装有两个步骤&#xff1a;* 1、将不能暴露的成员隐藏…

JSP 内置对象

JSP中一共预先定义了9个这样的对象&#xff0c;分别为&#xff1a;request、response、session、application、out、pagecontext、config、page、exception 1、request对象   request 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息&am…

CSDN 搜索工具使用体验与对比分析

搜索工具是 C 站的核心产品&#xff0c;也是广大计算机学习读者的最爱。基于 CSDN 的程序设计与基于 Baidu 的程序设计并肩&#xff0c;成为计算机学习者的最爱。 本文对几种常用的计算机行业相关搜索工具进行对比分析。 本次对比分析只针对各网站的 PC 端网页版。 文章目录0…

JSON对象转化为JSON字符串

在进行前端开发的时候&#xff0c;有时我们会遇到要将json对象转化为json字符串&#xff0c;那么该如何进行转化呢&#xff1f;&#xff1f;&#xff1f; 我们可以用JSON对象的stringify()和parse()方法。 JSON.stringify(obj) 将JSON对象转为字符串。 JSON.parse(stri…

des java c_这个des加密,到底是用的哪种类型?

到底是不是ECB模式Pkcs7&#xff1f;因为需要在别的语言中实现(js前端)&#xff0c;需要对接后端的加密方式&#xff0c;这是后端的方法不懂java&#xff0c;在http://tool.chacuo.net/cryptd...&#xff0c;都加不出相同的结果来看上去应该是和这篇文章的方法类似&#xff0c;…

【OpenCV 例程200篇】202. 查表快速替换(cv.LUT)

OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换&#xff08;cv.LUT&#xff09; 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 文章目录【youcans 的 OpenCV 例程200篇】202. 查表快速替换&#xff08;cv.LUT&#xff09;…

java控制单元测试_java – 当单元测试控制器时,模拟一个Spring Validator

在将单元测试postmortem编码到另一个项目创建的代码时,我遇到了如何使用initBinder模拟与控制器绑定的验证器的这个问题&#xff1f;通常我会考虑确保我的输入是有效的,并且在验证器中进行一些额外的调用,但在这种情况下,验证器类与通过几个数据源进行检查相结合,并且测试变得相…

LaTex实战笔记 4-字体格式

LaTeX 中的字体有 5 种属性&#xff1a; 字体编码&#xff1a;正文字体编码&#xff0c;数学字体编码字体族&#xff1a;罗马字体&#xff0c;无衬线字体&#xff0c;打字机字体&#xff08;等宽字体&#xff09;等字体系列&#xff1a;粗细&#xff0c;宽度字体形状&#xff…

jsoup 简单应用

JSOUP指的是前端爬虫框架&#xff0c;对HTML网页的一系列操作包括信息的获取内容的修改等。 jsoup简单应用 1.三种加载HTML的方法 Testpublic void test1() throws IOException {//从URL加载HTMLDocument document Jsoup.connect("http://www.guge.com").get();St…

PHP在哪里执行_php文件放在哪运行

下载一个WampServer (集成环境)安装后&#xff0c;把要运行的放到安装目录下的www(我安装在D盘&#xff1a;D:\wamp\wamp\www)&#xff0c;然后本机访问localhost/text.php(text.php是你要运行的php文件)。WampServer(推荐学习&#xff1a;PHP编程从入门到精通)WampServer是一款…

LaTex实战笔记 5-段落格式

2.1 换行和分段 通常 LATEX 会自动换行&#xff0c;也可以用\\ 或\newline 命令来强制换行。 开始一个段落&#xff0c;可以通过插入一个空行&#xff0c;也可以使用 \par 命令来强制分段。 连续两个换行符就是一个空行&#xff0c;可以将文字分段。但连续多个换行符&#xff…

jsoup解析和遍历一个html文档详解

解析和遍历一个HTML文档 如何解析一个HTML文档&#xff1a; String html "<html><head><title>First parse</title></head>""<body><p>Parsed HTML into a doc.</p></body></html>"; Docu…

【OpenCV 例程200篇】203. 伪彩色图像处理

OpenCV 例程200篇 总目录 201. 图像的颜色空间转换 202. 查表快速替换&#xff08;cv.LUT&#xff09; 203. 伪彩色图像处理 204. 图像的色彩风格滤镜 205. 调节色彩平衡/饱和度/明度 文章目录【youcans 的 OpenCV 例程200篇】203. 伪彩色图像处理什么是伪彩色图像&#xff1f;…

php post 丢失,php post大量数据时发现数据丢失问题解决方法,post数据丢失_PHP教程...

php post大量数据时发现数据丢失问题解决方法&#xff0c;post数据丢失解决办法&#xff1a;在php.ini中将max_input_vars调大改为5000就可以了原因追查&#xff1a;from的enctype”multipart/form-data”php版本5.6.6问题&#xff1a;部分POST数据接收不到追源代码发现是php中…

Jquery鼠标点击出现文字

点击鼠标左键出现文字效果。 原理解说 1.首先确定你是不是点的鼠标左键&#xff1b; 2.文字效果要出现在你鼠标点击的地方&#xff1b; 3.点击后文字出现一个由下往上的显示效果&#xff1b; 4.点击完成后固定时间内还得消失 效果演示 代码演示 <!DOCTYPE html> <h…