一些换行 回车等符号需要转义

主要注意 单引号 与双引号。

一 如果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 时 特殊字符转义错误 研究的更多相关文章

  1. Java技巧——将前端的对象数组通过Json字符串传到后端并转换为对象集合

    Java技巧——将前端的对象数组通过Json字符串传到后端并转换为对象集合 摘要:本文主要记录了如何将将前端的对象数组通过Json字符串传到后端,并在后端将Json字符串转换为对象集合. 前端代码 前 ...

  2. js中json字符串转成js对象

    json字符串转成js对象我所知的方法有2种: //json字符串转换成json对象 var str_json = "{name:'liuchuan'}"; //json字符串 / ...

  3. MaxPlus WStr Python 中的字符串传递给 MaxPlus

    MaxPlus WStr Python 中的字符串传递给 MaxPlus 在 MaxPlus 中,很多方法的参数使用的字符串的类是 WStr,所以在 Python 中,我们传递字符串的时候,就要把 P ...

  4. PHP中的多行字符串传递给JavaScript方法两则

    PHP和JavaScript都是初学.近期有这么个需求: 例如说有一个PHP的多行字符串: $a = <<<EOF thy38 csdn blog EOF; 传递给JavaScrip ...

  5. Edit页面返回ViewBag json字符串与前端js交互

    很多时候,在打开一个新页面的时候,后端需要同时传一个json字符串给前端页面,但是我们又不能把action的返回值改为string,这时候我们就需要用到ViewBag将json字符串传回到前端,前端j ...

  6. java json字符串和对象互转

    /** * Created by admin on 2017/7/26. */ public class NewPost { private String title; private String ...

  7. java json字符串转成 Map或List

    import java.util.List; import java.util.Map; import java.util.Map.Entry; import net.sf.json.JSONArra ...

  8. 后台对象转JSON字符串传到前台,前台JSON字符串转对象绑定标签赋值

    /// <summary> /// 创建换货单-自动获取对应的数据(后端) /// </summary> [HttpGet] public ActionResult GetPr ...

  9. java Json字符串转List<Map>类型

    //相关包 import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonPa ...

随机推荐

  1. 国网SGCC_UAP 反编译.class文件源代码

    SGCC_UAP和eclipse操作方式差不多,对于用惯了IDEA和Android Studio的人来说非常不方便,按住Ctrl点击类名不能查看源码. 因为jar包下都是.class文件,所以需要安装 ...

  2. (网页)SQLserver中在上线的项目中遇到科学计数法怎么办?

    遇到这个问题,首先上线的数据能清除吗?显然是不能的. 1.首先要去找这些科学计数法的数字是哪里来的. 2.怎么在不改变数据的情况下去操作这张表.可以使用convert()转一下Decimal.

  3. aws s3文件上传设置accesskey、secretkey、sessiontoken

    背景: 最近跟进的项目会封装aws S3资源管理细节,对外提供获取文件上传凭证的API,业务方使用获取到的凭证信息直接请求aws进行文件上传.因此,测试过程需要验证S3文件上传的有效性.aws官网有提 ...

  4. Python参数传递(传值&传引用)

    # 测试参数是传值还是传引用def test(arg): print("test before") print(id(arg)) arg[1]=30 # 测试可变对象 # arg[ ...

  5. Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)【转】

    Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息.它定义在include/linux/sched.h文件中. 谈到task_str ...

  6. PCA与KPCA

    PCA是利用特征的协方差矩阵判断变量间的方差一致性,寻找出变量之间的最佳的线性组合,来代替特征,从而达到降维的目的,但从其定义和计算方式中就可以看出,这是一种线性降维的方法,如果特征之间的关系是非线性 ...

  7. Docker容器学习与分享12

    Docker多主机管理 之前在一台Centos7上安装了Docker,如果是在多台主机上都安装Docker,用手动安装的方法不光效率低下,而且有可能出错,所以可以使用Docker Machine进行多 ...

  8. Linux 小知识翻译 - 「分区」

    安装Linux的时候,需要对硬盘进行分区.那么「分区」到底是什么呢? 「分区」在日语中有区分,分割的意思.计算机术语中有时会说「对一个磁盘进行分区」,整个意思就是指定如何分割磁盘的意思. 「对磁盘进行 ...

  9. Java读取properties文件工具类并解决控制台中文乱码

    1.建立properts文件(error.message.properties) HTTP201= 请求成功并且服务器创建了新的资源 2.在spring-mvc.xml文件(applicationCo ...

  10. C#の----Func,Action,predicate在WPF中的应用

    首先介绍下,winform中可以用this.invoke来实现:wpf中要使用调度器Control.Despite.invoke: (Action)(()=> { })和 new Action ...