当前位置:首页>开发>正文

C#里几种Json字符串特殊字符的转义 如何处理Json数据的换行符等特殊字符

2023-07-31 03:12:16 互联网 未知 开发

 C#里几种Json字符串特殊字符的转义 如何处理Json数据的换行符等特殊字符

C#里几种Json字符串特殊字符的转义

使用JSON从后台向前台传输数据的时候,当数据本身含有一些特殊字符,会导致JSON数据的解析出错。
使用下面的方法对即将向前台输出的json字符串进行处理,可以解决键盘上能输入的所有特殊字符问题。
//当文本中含有如下特殊字符时,此方法可以成功处理,让其在前台被正确解析,注意:此法不能处理单引号
public static String stringToJson(String s) {
StringBuffer sb = new StringBuffer ()
for (int i=0 i
char c = s.charAt(i)
switch (c) {
case ":
sb.append("\"")
break
// case \: //如果不处理单引号,可以释放此段代码,若结合下面的方法处理单引号就必须注释掉该段代码
// sb.append("\\")
// break
case /:
sb.append("\/")
break
case : //退格
sb.append("\b")
break
case f: //走纸换页
sb.append("\f")
break
case :
sb.append("\n") //换行
break
case : //回车
sb.append("\r")
break
case : //横向跳格
sb.append("\t")
break
default:
sb.append(c)
}}
return sb.toString()
}

//注意,下面的方法是在把你的数据文本接入json数据字符串之前使用,预先对文本做处理后在接入JSON字符串
//处理文本中的单引号 和 斜杠
public static String StringDanYinToJSON(String ors) {
ors = ors == null ? "" : ors
StringBuffer buffer = new StringBuffer(ors)
int i = 0
while (i if (buffer.charAt(i) == || buffer.charAt(i) == \) {
buffer.insert(i, \)
i = 2
} else {
i
}
}
return buffer.toString()
}

如何处理Json数据的换行符等特殊字符

要转义,JSON就是这一个致命的缺点,当有换行符号,单个转义""符号的时候,会出现解析失败。
避免这个问题,在强类型语言里,采用第三方包转换JSON的时候,其实会自动转义,当您自己去拼接的时候,可能要特殊处理,最简单的方式是replace的方式。

json格式如何读取有特殊字符的数据!内详!

json格式是{"a":"b","c":"d"},所以你从数据库读出的值如果包含{,",逗号,这类构造json格式的特殊字符,那么就容易破坏json数据的格式,自然无法正确读出,用replace方法替换掉特殊字符,在特殊字符前加。
例如:String s = "a:b,c"s.replace(":",":").replace(",",",")

如何处理JSON中的特殊字符

1. 回车问题
JSON传值的时候,如果有回车符就会挂的。我们可以使用正则来去掉回车符:
1 $str = preg_replace("([ ])[s] ", "", $str)
2
3 // 不用正则
4 $str = str_replace(" ","",$str)
转出来的字符串就没有回车符的困扰了。
顺便记录一个PHP过滤脚本:
01 02 // $document 应包含一个 HTML 文档。
03 // 本例将去掉 HTML 标记,javascript 代码
04 // 和空白字符。还会将一些通用的
05 // HTML 实体转换成相应的文本。

json数据中字段有特殊字符怎么解决

这个没法解决,只能靠转义 “”,JSON最大的缺点就是这个,所以在开发的过程中,要注意特殊字符,在强类型语言中,第三方包会自己解决这些问题。比如Java就会自动反转义。
最好的解决方式还是在开发过程中注意一点。
推荐个JSON在线解析工具给您。
http://www.sojson.com

反序列化json,出错,因为有特殊字符,请问怎么处理

估计是格式无法转换的错误。
看下json数据格式对不对。
最简单的办法是你写一个对象把他序列化成json,看看和传过来的json有什么区别。
比如说bool值,传过来的到底是true还是字符串的"true"或者是1