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

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

一 如果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. 微软Azure AspNetCore微服务实战 第一期

    微服务大家已经不在陌生了,相对传统单体架构其带来了更大的灵活性与多方位的效率提升. 2017官方发布了EshopOnContainers的微服务项目,其结合了.Net Core.Azure.Docke ...

  2. Android学习笔记----ArcGIS在线地图服务(Android API)坐标纠偏

    仅限于如下ArcGIS在线地图服务(高德提供数据): //概述:彩色中文含兴趣点版中国基础地图 //投影:WGS 1984 Web-Mercator //切片格式:MIXED90 //服务类型:基础地 ...

  3. Linux 学习笔记之超详细基础linux命令 Part 9

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 8----------------- ...

  4. vue路由的配置

    一.准备工作 1安装vue-cli  npm install vue-cli -g 2检查是否安装成功 vue -V(大写V) 3初始化一个新的项目 vue init  webpack vue-dem ...

  5. webrtc学习: 部署stun和turn服务器

    webrtc的P2P穿透部分是由libjingle实现的. 步骤顺序大概是这样的: 1. 尝试直连. 2. 通过stun服务器进行穿透 3. 无法穿透则通过turn服务器中转. stun 服务器比较简 ...

  6. javascript打印1-100内的质数

    <script> /* 质数定义: 质数(prime number)又称素数,有无限个. 质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数. 1不是质数 */ //声明变量 ...

  7. .net core HttpContext(Http上下文)

    在.NET Core中,只有Controller才能直接使用 HttpContext ,其他地方需要通过HttpContextAccessor来访问

  8. 【hexo】03config文件配置详解

    YAML 是专门用来写配置文件的语言,非常简洁和强大,我们的配置文件就是这种格式.需要了解的只有: # 我是文配置件的注释 重要提示,例如:"theme: landspace"中冒 ...

  9. SAP ABAP 如何查找SMOD增强

    1.查找程序名 T-CODE:SE93 2.查找开发类 T-code:se38 3.查找SMOD增强 T-CODE:SE16N.表:TADIR 4.查看增强具有哪些功能 T-CODE:SE16N.表: ...

  10. FileInputStream与FileOutputStream学习笔记

    这是我的第一篇博客,纪念一下吧! 最近学习了IO流,想着学长说的话,就突然想要写写博客了,别管这是什么逻辑了,进入正题. 一.FileInputStream 1.概念 FileInputStream是 ...