合法的json格式,json格式是什么
json和正则表达式
json是类似于javascript对象的一种数据格式;
json格式的数据:
{"name":'tom',
"age":18}
json数据格式的属性名称需要用双引号引起来,用单引号或者不用引号会导致读取数据错误。
json的另外一个数据格式是数组;
例如:['tom',18,'programmer']? ;
中括号是对象,大括号是数组;
对象和数组都是可以相互嵌套的;
info :? 信息;
ajax技术的原理是实例化;
使用此对象与后台通信。ajax通信的过程不会影响后续javascript的执行,从而实现异步;
ajax可以实现局部刷新,也叫做无刷新,无刷新指的是整个页面不刷新,只是局部刷新,ajax可以自己发送http请求。
常用参数:
1、url 请求地址
2、type 请求方式,默认是'GET',常用的还有'POST'
3、dataType 设置返回的数据格式,常用的是'json'格式,也可以设置为'html'
4、data 设置发送给服务器的数据
5、success 设置请求成功后的回调函数
6、error 设置请求失败后的回调函数
7、async 设置是否异步,默认值是'true',表示异步;
ajax,是前端与后台连接的地方;
URL 改变,在URL 里显示 HTML Form 参数的 name/value 值。
只适合有少量参数的 HTML Form,因为 URL 长度有字符限制,不能无限长。
涉及安全性的信息,比如用户密码,不能用 get,因为会在 URL 上显示,不安全。
URL 不改变,不在 URL 里显示 HTML Form 的数据。
Form 提交的信息没有长度限制。
涉及安全性的信息,如用户密码,应采用 post 方式。
什么是正则表达式?
字符串匹配规则;
1.var re=new RegExp('规则', '可选参数');? 面向对象的方法;
2.var re=/规则/参数;
1普通字符匹配:
例如:/a/ 匹配字符 ‘a’,/a,b/ 匹配字符 ‘a,b’
2.转义字符匹配:
\d 匹配一个数字,即0-9
\D 匹配一个非数字,即除了0-9
\w 匹配一个单词字符(字母、数字、下划线)
\W 匹配任何非单词字符。等价于[^A-Za-z0-9_]
\s 匹配一个空白符
\S 匹配一个非空白符
\b 匹配单词边界
\B 匹配非单词边界
. 匹配一个任意字符,除了换行符‘\n’和回车符‘\r’
\1 重复子项;
正则匹配的是字符串用的;? ? ?? 字符串里有一个都返回true;
任意一个或者范围
1.[abc123] : 匹配‘abc123’中的任意一个字符;
2.[a-z0-9] : 匹配a到z或者0到9中的任意一个字符;
1.^ 以紧挨的元素开头;
2.$ 以紧挨的元素结尾;
量词:对左边的匹配字符定义个数
? 出现零次或一次(最多出现一次)(可以出现0次和1次);
出现一次或多次(至少出现一次);
出现零次或多次(任意次);
{n} 出现n次? ;
{n,m} 出现n到m次? ;
{n,} 至少出现n次?? ;
g: global,全文搜索,默认搜索到第一个结果接停止
i: ingore case,忽略大小写,默认大小写敏感
m: multiple lines,多行搜索(更改^ 和$的含义,使它们分别在任意一行对待行首和行尾匹配,而
不仅仅在整个字符串的开头和结尾匹配);
Java用于校验一个字符串是否是合法的JSON格式
ScriptEngineManager sem = new ScriptEngineManager();ScriptEngine se = sem.getEngineByName("js");String jsonstr = " \r\n [{}]";try { if (!jsonstr.matches("^[\r\n\f\t\\x20]*[\\{\\[][\\s\\S]*")) { throw new ScriptException("必须以{或[开头"); } se.eval("(" + jsonstr + ")"); System.out.println("是json格式");} catch (ScriptException e) { String exp = e.toString().replaceAll(".*\\:(.*)", "$1"); System.err.println(exp.replaceAll("\\(.+(?=at)", ""));}
如何验证json格式的正确性
1 打开json验证网站;
2、用nodepad++打开json文件,复制文本,或者将自己的文本复制粘贴到网站上面,点击validate;
3、上图中显示Parse error on line 1: { ? ?title: { ? ? ? ?tex -----^ Expecting 'STRING', '}' ,实际上,整个json都是1行,这个网站只能查看正确或者错误,并不能特别精确的显示具体的行数。 需要你用nodepad++,把格式转换好,自己细心的查找问题。