目录
1.什么是json?
2.什么是一个json的对象
3.服务器端如何封装一个json的字符串呢
1.什么是json?
通俗来说 就是把java对象转换为一个json的字符串,再到浏览器端把json的字符串转换为javascript的对象。
也就是一个序列化和反序列化的过程
也就是这样一个过程
2.什么是一个json的对象
1 | [{ "name" : "JSON" , "address" : "四川省" , "age" : 18 }] //数据对象格式 |
但是由于浏览器获得并不是一个json的对象,而是一个json的字符串(json的字符串不具有属性,也就是无法获取到对象里面的值)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <script type= "text/javascript" > var s1= "{name:'xyf',age:19}" //普通的字符串,普通字符串没有属性 var p1={name: 'yzk' ,age: 18 }; //普通键值对对象 alert(s1); alert(p1); alert(p1.age); alert(s1.name); var p2=eval( "(" +s1+ ")" ); //转换对象 eval字符串转换为对象,使用eval将 alert( "名称是" +p2.name); //eval会有安全问题 应该使用json来转换,只有新的浏览器才支持 var s2= "[3,5,9]" ; var arrl=JSON.parse(s2); alert(arrl[ 2 ]); //得到第三个对象 </script> |
需要通过转换的方式将其转换为json的对象
方法一:eval方法转换,但是该方法不安全
1 | var p2=eval( "(" +s1+ ")" ); //转换对象 eval字符串转换为对象,使用eval将 |
方法二:json.parse方法,该方法只支持新版的浏览器
1 2 3 | var s2= "[3,5,9]" ; var arrl=JSON.parse(s2); alert(arrl[ 2 ]); //得到第三个对象 |
3.服务器端如何封装一个json的字符串呢
方法一:直接拼接,简单粗暴,但是每次都这样就很麻烦
1 | String s= "{age:" +u.getAge()+ ",phoneNum:'" +u.getPhone()+ "'}" ; |
方法二:
1 2 3 | Gson gson= new Gson(); String s=gson.toJson(u); //遍历所有字段并生成json resp.getWriter().println(s); |
使用谷歌的gson来封装一个字符串
需要导入jar文件到lib下
gson-2.5.jar 点击打开链接
同样使用gson来封装字符串有两个问题
1.json不能调用类中的方法,也就是假如你定义一个toString的方法 在浏览器端是无法解析出来的
2.json通过字段来获取封装为字符串,并不是遍历一个类中的所有成员。