JSON详解
来源:互联网 发布:浪拍云的淘宝人生 编辑:程序博客网 时间:2024/05/22 03:09
本篇本人学习理解JSON的学习记录用,共同进步,欢迎指点。
JSON概念
JSON(JavaScript Object Notation),即JavaScript对象表示法,它是用于轻量级数据交互,完全独立于语言的 文本格式,取代XML格式的繁琐标记。JSON易于程序员阅读和编写,同时也易于机器解析生成。
JSON的两种结构
JSON有两种结构:1、对象。2、数组
1。对象:对象在js中表示为{}里面的内容,key/value 构成,value 的值可以是true、false、null、对象或数组。
数据结构如下:
{
key1:value1,//例如 "name":"张三"
key2:value2,//“age”:22
...
}
2.数组:数组表示一系列有序的值。
数据结构:`
[
{
key1:value1,
key2:value2
},
{
key3:value3,
key4:value4
}
]
JSON字符串:var str =‘{ “name”: “李四”, “sex”: “man” }’;
JSON对象:var jsobj ={ “name”: “李四”, “sex”: “man” };
JSON字符串和对象的转换
一、JSON字符串转换为JSON对象。
注意区分字符串和JSON字符串的区别。
字符串:使用“”双引号或’’单引号包括的字符。
json字符串:符合json格式要求的js字符串。
var obj = JSON.parse(str);
JSON.parse(). 现在大多数浏览器都支持这个方法,是推荐使用的方法。
二、JSON对象转JSON字符串
var str2 = JSON.stringify(jsobj);
默认情况下,JSON.stringify()输出的JSON字符串不包括任何空格字符或缩进。
在JS中使用JSON
JSON的读写有两种方式:一、利用”.”操作符二、“[key]”的方式。
var obj = {
1: “value1”,
“2”: “value2”,
person: [ //数组结构JSON对象,可以嵌套使用
{
id: 1,
name: “张三”
},
{
id: 2,
name: “李四”
}
],
object: { //对象结构JSON对象
id: 1,
msg: “对象里的对象”
}
};
1.从JSON中读数据
function readJSON(){
alert(obj.1); //会报语法错误,可以用alert(obj[“1”]);说明数字最好不要做关键字
alert(obj.person[0].name); //或者alert(obj.person[0][“name”])
alert(obj.object.msg); //或者alert(obj.object[“msg”])
}
2.向JSON中写数据
function write(){
//往JSON对象中增加了一条记录
obj.sex= “男” //或者obj[“sex”]=”男”
}
3.修改JSON中的cout的值
function Update() {
obj.count = 10; //或obj[“count”]=10
}
4.删除JSON中数据
delete obj.count;
处理客户端提交的JSON数据
客户端提交过来的数据一般是JSON字符串,我们一般处理方式为将JSON字符串转换为JSON对象,
可以利com.alibaba.fastjson快速序列化转换。
Ajax使用JSON传递数据
使用jQuery实现Ajax时,客户端可以使用$.getJSON()向服务器端发送JSON格式的数据,服务器端也可以向客户端返回JSON格式的数据。
格式:
$.getJSON( 请求路径, JSON格式的请求数据, function(result,textStatus,xhr) { 请求成功后执行 });
客户端:json.jsp
<script type="text/javascript"> function isExist() { var $mobile = $("#mobile").val(); if ($mobile == null || $mobile.length != 11) { $("#tip").html("请输入正确的手机号码!"); } else { $.getJSON('MobileJSONServlet',{mobileNum: $mobile},function(result){ $("#tip").html(result.msg); }); } } …</head><body> <form action=""> <input type="text" id="mobile" /> <font color="red" id="tip"></font><br /> <input type="button" value="绑定" onclick="isExist()" /> </form></body>
服务器端:MobileJSONServlet.java
/import…public class MobileJSONServlet extends HttpServlet{ protected void doGet(…) throws ServletException, IOException { this.doPost(request, response); } protected void doPost(…) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String mobile = request.getParameter("mobileNum"); if("1888".equals(mobile)) { //返回json格式的数据 {"msg":"此号码已经被绑定"} out.print("{\"msg\":\"此号码已经被绑定,请尝试其他号码!\"}"); } else { //返回JSON格式的数据 {"msg":"绑定成"} out.print("{\"msg\":\"绑定成功!\"}"); } out.close(); } }
客户端使用.getJSON向服务器端MobileJSONServlet发送JSON数据{mobileNum:mobile},服务器端接收到mobileNum的值后再以JSON对象的格式返回给客户端,如{“msg”:”绑定成功!”}。最后,客户端再解析服务器端返回的JSON值,如result.msg。
上述的服务器端代码MobileJSONServlet中,是通过字符串拼接的形式向客户端返回了JSON形式的结果,如{“msg”:”绑定成功!”}。除此之外,我们还可以在服务器端中使用JSONObject类来产生JSON对象,并返回给客户端,如下:
客户端:json.jsp
<script type="text/javascript"> function jsonObjectTest() { var stuName = $("#stuName").val(); var stuAge = $("#stuAge").val(); $.getJSON('JSONObjectServlet',{name:stuName,age:stuAge},function(result){ var student = eval(result.stu); alert(student.name+","+student.age); }); } </script></head><body> <form action=""> 姓名:<input type="text" name="stuName" id="stuName"><br/> 年龄:<input type="text" name="stuAge" id="stuAge"><br/><input type="button" value="绑定" onclick="jsonObjectTest()" /> </form></body>
服务器端:使用JSONObject,需要给项目导入jar文件:
JSONObjectServlet.java
import net.sf.json.JSONObject;public class JSONObjectServlet extends HttpServlet { protected void doGet(…) throws ServletException, IOException { this.doPost(request, response);} protected void doPost(…) throws ServletException, IOException { response.setContentType("text.html;charset=utf-8"); PrintWriter out = response.getWriter(); String name = request.getParameter("name"); int age = Integer.parseInt(request.getParameter("age"));Student.setName(name);Student.setAge(age); JSONObject json = new JSONObject();//将student对象放入json对象中 json.put("stu",student);//类似{"stu":student} out.print(json) }}
客户端通过$.getJSON()向服务器端JSONObjectServlet发送请求,并传递JSON格式的数据{name:stuName,age:stuAge}.服务器将客户端的数据封装到Student对象之中,之后再将Student对象加入到JSONObject对象之中,并把JSONObject对象返回给客户端。最后,客户端通过回调函数的参数result接收到JSONObject对象,并通过eval(result.stu)将JSONObject对象之中的stu转义为JSON字符串格式,再用student.name等拿到需要使用的值。
- JSON 详解
- JSON详解
- JSON详解
- JSON详解
- JSON详解
- JSON详解
- json 详解
- json详解
- JSON详解
- JSON详解
- JSON详解
- json详解
- JSON详解
- JSON详解
- JSON详解
- JSON详解
- json详解
- Json详解
- subliem text 3编译C\C++
- 刷题 集合
- HDU 2795 Billboard(线段树-水题,模板题)
- 法国大革命(1789)
- 软件工程: 从java到放弃
- JSON详解
- 9月7日笔记(mysql数据库命令和JDBC)
- HDU 2838 Cow Sorting(树状数组-水题)
- 【LeetCode】Evaluate Reverse Polish Notation(逆波兰表达式求值) -(Linkedin) Medium ++
- Freeline
- ffplay看直播,简洁是美
- mysql日志
- iOS学习笔记-127.SDWebImage3——缓存的清除和操作的取消
- 我所理解的WSGI(关键词:Python/HTTP/WSGI/web开发)