有关JSON的个人理解:
JSON其实就是一个独立于任何编程语言的独立的轻量的数据交换的东西,方便于人的阅读和机器的解析。里面的内容还是键值对的形式存在的,可以对其进行增删改查的,但是当从数据库中调用数据的时候,需要对其进行数据的转换。
对象格式和数组格式可以互相嵌套!!注意:json的key是字符串(不能以数字开头) json的value是Object
一、JSON含义:
JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。
json是js的原生内容,也就意味着js可以直接取出json对象中的数据.
json是一种与语言无关的数据交换的格式,作用:使用ajax进行前后台数据交换! 移动端与服务端的数据交换!
(XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。)
二、JSON定义:
var json = { 键 : 值, 键 : 值, ..... }
说明 : json中的键 用双引号括起来 值可以是任意类型的数据 ( 严格的json值不会出现function (){...} 严格的json键用双引号括起来)
三、JSON字符串和对象的区别:
字符串:指使用“”双引号或’’单引号包括的字符。例如:var comStr = 'this is string';
json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}";
json对象:指符合json格式要求的js对象。例如:var jsonObj = { StudentID: "100", Name: "tmac", Hometown: "usa" };
四、获取JSON数据:
json.键 或 json["键"]
五、JSON对象的遍历 :
使用 for ...in
六、JSON数据的存和取:
1、json值的获取 :
json对象.键
json对象["键"]
2、json中的值可以是数组
var json = {
"url" : ["1.jpg","2.jpg"],
"con" : ["图片一","图片二"]
}
数组中存放json :
[{"uname":"uname","pwd":111},{"uname":22,"pwd":22},{"uname":33,"pwd":999}]
var a = { "person":[{"name":"张三","age":18},{"name":"李四","age":20}], "person1":[{"name":"王五","age":22},{"name":"马六","age":24}] };
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="jquery.min.js"></script> <script type="text/javascript"> function fget(){ $.get( "${pageContext.request.contextPath}/AjaxServlet",//url "name=张三",//请求参数 function(data){ alert(data.str) },//回调函数 "json"//返回的类型 ); } function fpost(){ $.post( "${pageContext.request.contextPath}/AjaxServlet",//url "name=张三",//请求参数 function(data){ alert(data.str) },//回调函数 "json"//返回的类型 ); } function fajax(){ $.ajax({ url:"${pageContext.request.contextPath}/AjaxServlet02",//url async:true, //是否异步,默认是true代表异步 data:{"username":"张三"},//请求参数 type:"post", //请求方式,POST/GET success:function(data){ //回调函数 alert(data.username) }, dataType:"json"//返回的类型 }); } </script> </head> <body> <input type="button" value="ajax的get请求" onclick="fget()"> <input type="button" value="ajax的post请求" onclick="fpost()"> <input type="button" value="ajax的ajax请求" onclick="fajax()"> </body> </html>
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // post解决乱码 request.setCharacterEncoding("utf-8"); String username = request.getParameter("username"); System.out.println(username); // 因为write里面必须是“ 并且json里面也必须是" ,所以需要转义” 里面是拼接JSON串 // 解决乱码 response.setContentType("text/html;charset=utf-8"); response.getWriter().write("{"username":""+username+""}"); }
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //post解决乱码 request.setCharacterEncoding("utf-8"); String name =request.getParameter("name"); //get请求处理乱码 name = new String(name.getBytes("iso8859-1"),"utf-8"); System.out.println(name); // 因为write里面必须是“ 并且json里面也必须是" ,所以需要转义” //解决乱码 response.setContentType("text/html;charset=utf-8"); response.getWriter().write("{"str":"你好"}"); }
七、字符串与对象的转换:
客户端提交过来的数据一般都是json字符串,有了更好地进行操作(面向对象的方式),所以我们一般都会想办法将json字符串转换为json对象。
JSON.parse( ) 将字符串转为对象
JSON.stringify( ) 将对象({ } [ ])转为字符串
八、有关JSON的其他操作:
JSON是JS的一个子集,我们可以遍历其,当然也可以对其进行数据的操作:
增(加)用add;
删(除)用delete;
(修)改用update;
查(看)用for..in循环进行遍历