json格式是{a:b,c:d},所以你从数据库读出的值如果包含{,,逗号,这类构造json格式的特殊字符,那么就容易破坏json数据的格式,自然无法正确读出,用replace方法替换掉特殊字符,在特殊字符前加\。
最近遇到一个问题,在lua中使用cjson解析json中数据为null时,解析出来是一个userdata。如图:
我们需要判断这个值使用cjsonnull。
具体的可以看看 文档 很详细。
使用JSON从后台向前台传输数据的时候,当数据本身含有一些特殊字符,会导致JSON数据的解析出错。
使用下面的方法对即将向前台输出的json字符串进行处理,可以解决键盘上能输入的所有特殊字符问题。
//当文本中含有如下特殊字符时,此方法可以成功处理,让其在前台被正确解析,注意:此法不能处理单引号
public static String stringToJson(String s) {
StringBuffer sb = new StringBuffer ();
for (int i=0; i<slength(); i++) {
char c = scharAt(i);
switch (c) {
case '\"':
sbappend("\\\"");
break;
// case '\\': //如果不处理单引号,可以释放此段代码,若结合下面的方法处理单引号就必须注释掉该段代码
// sbappend("\\\\");
// break;
case '/':
sbappend("\\/");
break;
case '\b': //退格
sbappend("\\b");
break;
case '\f': //走纸换页
sbappend("\\f");
break;
case '\n':
sbappend("\\n"); //换行
break;
case '\r': //回车
sbappend("\\r");
break;
case '\t': //横向跳格
sbappend("\\t");
break;
default:
sbappend(c);
}}
return sbtoString();
}
//注意,下面的方法是在把你的数据文本接入json数据字符串之前使用,预先对文本做处理后在接入JSON字符串
//处理文本中的单引号 和 斜杠
public static String StringDanYinToJSON(String ors) {
ors = ors == null "" : ors;
StringBuffer buffer = new StringBuffer(ors);
int i = 0;
while (i < bufferlength()) {
if (buffercharAt(i) == '\'' || buffercharAt(i) == '\\') {
bufferinsert(i, '\\');
i += 2;
} else {
i++;
}
}
return buffertoString();
}
版本 2
程序集 类_json, , 公开, 注意:对于数字键名或者非正常变量字符(比如有空格),必须使用 aa[x]的方式。
子程序 成员数, 整数型, 公开
参数 名字, 文本型, 可空, 支持abc,根目录为空
子程序 赋值, , 公开
参数 值, 文本型
参数 为对象, 逻辑型, 可空, 数值,json节点
子程序 加成员, , 公开
以上就是关于json格式如何读取有特殊字符的数据!内详!全部的内容,包括:json格式如何读取有特殊字符的数据!内详!、【Lua】cjson解析null、JSON如何获取非法字符的字段的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)