java json字符串传递给 js 时 特殊字符转义错误 研究
一些换行 回车等符号需要转义
主要注意 单引号 与双引号。
一 如果js以 双引号接收字符串 则转单引号 " 至 \" 否则js报错
二 如果js以 单引号接收字符串 则转单引号 ' 至 \' 否则js报错
不管哪种情况 字符串中原有\ 需替换 成 \\
{"Aaa":0,"bbb":1,"ddd":"a哦我\"我'我'哇"}
====》
{\"Aaa\":0,\"bbb\":1,\"ddd\":\"a哦我\\\"我'我'哇\"} 双引号接收
{"Aaa":0,"bbb":1,"ddd":"a哦我\\"我\'我\'哇"} 单引号接收
package CN80s.MicroCampus;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class Daaa {
private static SerializerFeature[] features = {
// SerializerFeature.DisableCircularReferenceDetect,
SerializerFeature.DisableCheckSpecialChar,
SerializerFeature.QuoteFieldNames,
SerializerFeature.WriteEnumUsingName,
SerializerFeature.WriteNullNumberAsZero,
SerializerFeature.WriteNullStringAsEmpty,SerializerFeature.WriteMapNullValue
};
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AAA aa=new AAA();aa.ddd="a哦我\"我'我'哇";
String dc=aa.ddd;
aa.setDdd(dc);
System.out.println(aa.ddd);
String ss=JSON.toJSONString(aa);//,SerializerFeature.WriteNullNumberAsZero
//String sss=JSON.toJSONString(aa, true);
String s1=JSONObject.toJSONString(aa,features);
System.out.println(ss);
System.out.println(s1);
System.out.println("=="+stringToJson(ss,true));
Map < String , Object > jsonMap = new HashMap< String , Object>();
jsonMap.put("a",1);
jsonMap.put("b","");
jsonMap.put("c",null);
jsonMap.put("d","wuzhuti.cn");
String str = JSONObject.toJSONString(jsonMap,features);
System.out.println(str);
net.sf.json.JSONObject ddd=new net.sf.json.JSONObject();
ddd.put("dddd","的撒旦法撒旦法撒'\"旦法'撒旦法");
System.out.println(ddd.toString().replaceAll("'","\\\\'"));
System.out.println("=="+stringToJson(ddd.toString(),true));
}
/**
* java 字符串 转义特殊字符 to js
* @param s
* @param isJSjson 是否给js使用 true 则会转义单引号 \'
* @return
*/
public static String stringToJson(String s,boolean isJSjson){
StringBuffer sb = new StringBuffer();
for(int i=0; i<s.length(); i++){
char c =s.charAt(i);
switch(c){
case'\'': if(isJSjson) {sb.append("\\\'");}else{sb.append("\'");} break;
case'\"': if(!isJSjson) {sb.append("\\\"");}else{sb.append("\"");} break;
case'\\':sb.append("\\\\"); break; //如果不处理单引号,可以释放此段代码,若结合StringDanYinToJSON()处理单引号就必须注释掉该段代码
case'/': sb.append("\\/");break;
case'\b':sb.append("\\b");break;//退格
case'\f':sb.append("\\f");break;//走纸换页
case'\n':sb.append("\\n");break;//换行
case'\r':sb.append("\\r");break;//回车
case'\t':sb.append("\\t");break;//横向跳格
default: sb.append(c);
}}
return sb.toString();
}
/**处理文本中的单引号 和 斜杠*/
public static String StringDanYinToJSON(String ors) {
ors= ors == null ? "" : ors;
StringBuffer buffer = new StringBuffer(ors);
int i = 0;
while(i < buffer.length()) {
if(buffer.charAt(i) == '\'' || buffer.charAt(i) == '\\') {
buffer.insert(i,'\\');
i+= 2;
}else {
i++;
}
}
return buffer.toString();
}
}
输出结果
a哦我"我'我'哇
{"Aaa":0,"bbb":1,"ddd":"a哦我\"我'我'哇"}
{"Aaa":0,"bbb":1,"ccc":"","ddd":"a哦我"我'我'哇"}
=={"Aaa":0,"bbb":1,"ddd":"a哦我\\"我\'我\'哇"}
{"d":"wuzhuti.cn","b":"","c":null,"a":1}
{"dddd":"的撒旦法撒旦法撒\'\"旦法\'撒旦法"}
=={"dddd":"的撒旦法撒旦法撒\'\\"旦法\'撒旦法"}
java json字符串传递给 js 时 特殊字符转义错误 研究的更多相关文章
- Java技巧——将前端的对象数组通过Json字符串传到后端并转换为对象集合
Java技巧——将前端的对象数组通过Json字符串传到后端并转换为对象集合 摘要:本文主要记录了如何将将前端的对象数组通过Json字符串传到后端,并在后端将Json字符串转换为对象集合. 前端代码 前 ...
- js中json字符串转成js对象
json字符串转成js对象我所知的方法有2种: //json字符串转换成json对象 var str_json = "{name:'liuchuan'}"; //json字符串 / ...
- MaxPlus WStr Python 中的字符串传递给 MaxPlus
MaxPlus WStr Python 中的字符串传递给 MaxPlus 在 MaxPlus 中,很多方法的参数使用的字符串的类是 WStr,所以在 Python 中,我们传递字符串的时候,就要把 P ...
- PHP中的多行字符串传递给JavaScript方法两则
PHP和JavaScript都是初学.近期有这么个需求: 例如说有一个PHP的多行字符串: $a = <<<EOF thy38 csdn blog EOF; 传递给JavaScrip ...
- Edit页面返回ViewBag json字符串与前端js交互
很多时候,在打开一个新页面的时候,后端需要同时传一个json字符串给前端页面,但是我们又不能把action的返回值改为string,这时候我们就需要用到ViewBag将json字符串传回到前端,前端j ...
- java json字符串和对象互转
/** * Created by admin on 2017/7/26. */ public class NewPost { private String title; private String ...
- java json字符串转成 Map或List
import java.util.List; import java.util.Map; import java.util.Map.Entry; import net.sf.json.JSONArra ...
- 后台对象转JSON字符串传到前台,前台JSON字符串转对象绑定标签赋值
/// <summary> /// 创建换货单-自动获取对应的数据(后端) /// </summary> [HttpGet] public ActionResult GetPr ...
- java Json字符串转List<Map>类型
//相关包 import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonPa ...
随机推荐
- MySQL高可用方案--MHA原理
简介 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是日 ...
- http协议及长连接和短连接
1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议. IP协议主要解决网络路由和寻址 ...
- C语言编程比赛WBS
- python第五十二天---第九周作业 类 Fabric 主机管理程序
类 Fabric 主机管理程序开发:1. 运行程序列出主机组或者主机列表2. 选择指定主机或主机组3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载)4. 充分使用多线程或多进程5. 不同 ...
- 浅谈C#依赖注入
什么是依赖注入?不管是js中的一些前端框架还是,java,C#,php等中的一些后端开发框架中,都会涉及这个看着逼格略高的词语:依赖注入,越是看着好像很厉害的东西越是会让许多人学习产生恐惧,好像很厉害 ...
- 第五章 绘图基础(DEVCAPS1)
获取设备环境的信息 //DEVCAPS1.C--Device Capabilities Display Program No.1 (c) Charles Petzold, 1998 #include ...
- syslog与rsyslog的了解与比较
syslog日志收集器: syslog是早期的centos版本的日志收集器,应该是centos5之前的版本. syslog的两个重要的守护进程: 1.syslogd:system.主要以收集系统服务为 ...
- Centos7系统详细的启动流程
熟悉系统启动流程对于我们学习Linux系统是非常有帮助的,虽然基础,但能帮助我们更加理解Linux系统的工作机制.以下将以CentOS发行版为例来介绍Linux系统的启动流程,因为在CentOS 5. ...
- tkinter学习系列之(六)Radiobutton控件
目录 目录 前言 (一)基本属性 (二)在Frame里布局: 目录 前言 Radiobutton单选框,在一组选框中,只能选中一个. (一)基本属性 (1)特有属性: value 按钮的值 varia ...
- 【HDU4507】恨7不成妻
Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: 2+1+4=7 ...