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

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

一 如果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. 【Java入门提高篇】Day33 Java容器类详解(十五)PriorityQueue详解

    今天要介绍的是基础容器类(为了与并发容器类区分开来而命名的名字)中的另一个成员——PriorityQueue,它的大名叫做优先级队列,想必即使没有用过也该有所耳闻吧,什么?没..没听过?emmm... ...

  2. 13.1、多进程:进程锁Lock、信号量、事件

    进程锁: 为什么要有进程锁:假如现在有一台打印机,qq要使用打印机,word文档也要使用打印机,如果没有使用进程锁,可能会导致一些问题,比如QQ的任务打印到一半,Word插进来,于是打印出来的结果是各 ...

  3. JavaScript变量提升的理解

    变量提升 先说三句总结性的话: let 的「创建」过程被提升了,但是初始化没有提升. var 的「创建」和「初始化」都被提升了. function 的「创建」「初始化」和「赋值」都被提升了. 所以,我 ...

  4. java 按字节读写二进制文件(Base64编码解码)

    最近在做项目时遇到这样一个需求:依次读取本地文件夹里所有文件的内容,转为JSON,发送到ActiveMQ的消息队列, 然后从MQ的消息队列上获取文件的信息,依次写到本地.常见的文件类型,比如.txt ...

  5. Linux 内存文件系统

    Linux内存文件系统:可满足高IO的要求 ramdisk: 基于虚拟在内存中的其他文件系统(ex2fs). 挂载方式:mount /dev/ram /mnt/ramdisk ramfs: 物理内存文 ...

  6. 字符串相似度算法-LEVENSHTEIN DISTANCE算法

    Levenshtein Distance 算法,又叫 Edit Distance 算法,是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一 ...

  7. Hybris 用户注册的时候何如添加指定的用户组

    主要逻辑:xxx.service.impl.ConsultantServiceImpl public class ConsultantServiceImpl extends DefaultCustom ...

  8. LNMP环境搭建详细教程

    之前有一篇博客写的是LAMP的环境搭建,今天来详细介绍一下另外一个模式——LNMP=Linux+Nginx+MySQL+PHP. 一.在Linux系统下nginx的安装过程,先到http://ngin ...

  9. Win10恢复账户默认半透明头像

    WIN10账户默认的头像的都是半透明,但年少不更事就换了头像,接着看到别人的头像是半透明的,就开始后悔了,然后就去问度娘.结果大多数如下 对于一个有着强迫症患者的人来说,每次看到锁屏界面时的不透明账号 ...

  10. selenium 初探

    # -*- coding:utf-8 -*- from selenium import webdriver driver = webdriver.Firefox() # 打开firefox浏览器 dr ...