-
什么是JSON
2019-10-29 17:34:55什么是JSON 一、什么是json? json的全称为:JavaScript Object Notation,是一种轻量级的数据交互格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示...什么是JSON
一、什么是json?
json的全称为:JavaScript Object Notation,是一种轻量级的数据交互格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。【以上来自于百度百科】
简单来说:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。
类似于:国际通用语言-英语
中国56个民族不同地区的通用语言-普通话。
但真要说json到底是什么,以及json的作用,我们总是难以描述,下面我将从各个方面来进行说明:二、与javascript的关系
相信很多程序员只要一提到json总会想到js,因为json不仅含有js的名字,其格式也与js中对象(object)的格式并无一二。
这里我们要进行一个说明,首先json是基于ECMAScript语法,但这并不意味着json必须在js中使用,或者必须要产生什么联系,json在js中的处理也并没有比其他语言占有更多优势。只是因为语法相似,而使得js开发者能更快的上手json而已。
事实上几乎所有编程语言中都有对json数据转换的支持:
1、js中,json与对象的转换:
JSON.parse()/JSON.stringify();
2、php中,json与数组的转换:json_encode()/json_decode();
3、java中,json与对象的转换:fromJson()/toJson();
4、python中,json与对象的转换:json.dumps()/json.loads();
三、语法格式
那么json的语法格式到底是怎样的呢?我们先来看一段json数据:
{"name":"admin","age":18}
这就是一种最简单的json,如果有学过js的开发者是不是发现json的语法与js中object的语法几乎相同。
json是一种纯字符数据,不属于编程语言
json的语法与js中object的语法几乎一致(下一部分说明不同)1、json数据以键值对形式存在,多个键值对之间用逗号,隔开,键值对的键和值之间用冒号:连接
2、json数据在js对象的基础上做了严格化
3、json数据中的键值对可以使用编程语言中所谓的关键字(*见注意事项)
4、json的数据可以用花括号{}或中括号[]包裹,对应js中的object和array四、注意事项
为什么说几乎相同,而不是完全相同呢?接下来我们要说的就是json与js中对象的不同点,也是json严格要求的部分:
json的键值对的键部分,必须用双引号"包裹,单引号都不行(所以如果在键中出现了关键字,也被字符化了),而js中对象没有强制要求(所以在键中不允许出现关键字)
json的键值对的值部分,不允许出现函数function,undefined,NaN,但是可以有null,js中对象的值中可以出现
json数据结束后,不允许出现没有意义的逗号,如:{"name":"admin","age":18,}
,
注意看数据结尾部分18的后面的逗号,不允许出现.五、总结
所以,json数据的可以是:
{"name":"admin","age":18}
也可以是:
["hello",3.1415,"json"]
还可以是:
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20}]
不能是:(key没有双引号)
{"name":"admin",age:18}
不能是:(无意义的逗号)
{"name":"admin","age":18,}
不能是:(不允许出现函数)
{"name":"admin","age":18,"show":function()()}
不能是:(不允许出现undefined)
{"name":"admin","age":18,"show":undefined}
不能是:(不允许出现NaN)
{"name":"admin","age":18,"strong":NaN}
不能是:(无意义的逗号)
["hello",3.1415,"json",]
不能是:(无意义的逗号)
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20},]
以上内容,希望能对以后使用json有所帮助。
其实作为通用数据,xml也是一种不错的选择,但是随着json的出现,xml的使用场景正慢慢被json蚕食,相对来说json在某些方面下的体现还是比xml稍具优势,后期可再开一篇文档说明json和xml的区别。
结语
如有不全或错误,欢迎留言指出,谢谢支持……^ _ ^欢迎评论转载
-
什么是json
2014-01-14 10:11:24json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构 1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,......百度百科解释:
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。经过对象、数组2种结构就可以组合成复杂的数据结构了。下面的不是json字符窜:1.var testJson = '[a,b]';
var ee = $.parseJSON(testJson);----error Unexpected token a
console.log(typeof(ee));2.var testJson = '[01,02]';
var ee = $.parseJSON(testJson);----error Unexpected number
console.log(typeof(ee));3.var testJson = '[1,2]';
var ee = $.parseJSON(testJson);
console.log(typeof(ee));----right4.var json = '{a:1,b:2}';5.var json = '{"3":1,"4":2}';
var ee = $.parseJSON(json);-----error Unexpected token a ------- key only can be string
console.log(typeof(ee));
var ee = $.parseJSON(json);
console.log(typeof(ee));----right6.java List toString() 和json
testList.add("01");
testList.add("02");
System.out.println(testList.toString());------输出是[01,02] 返回到前台转json的时候会报错1.Gson gson = new Gson();
String test = gson.toJson(testList);2.JSONArray jsonArray = JSONArray.fromObject(testList);
System.out.println(jsonArray.toString());上面两种输出时["01","02"]----这是不会报错的json(不会再前台报错的json)
7json对象中只能用双引号(为了很多语言统一),由于在js中定义字符串的时候双引号和单引号都可以,所以下面两种形式都是json字符串
Var strJSON = “{\“Area\”:[{\“AreaId\”:\”123\”},{\“AreaId\”:\”345\”}]}”,---json字符串
Var strJSON = ‘{“Area”:[{“AreaId”:”123”},{“AreaId”:”345”}]}’,------json字符串
var jsonObject = {"aa":"bb"};---这是json对象
var jsonObject = {'cc':'dd'};---这是定义js对象
注意:var strJSON = "{'aa':'33'}";------这个不是json字符串,在转json的时候会报错
-
前后端角度看接口(什么是json)?
2020-01-01 16:54:25什么是JSON?什么是JSON?
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
json前两个字就是js,说明其与js必然存在一些联系,其实json可以理解为盛装js数据的一个容器(不是只能装js的,不要扣这些),说白了,就是储存数据的一个小玩意儿。其实如果你身边有搞前端的同学,不难发现,他们会经常说接口、报文,对于一个后端小白的我来说,也很想明白这究竟是个什么东东,最近工作一直做前后端开发,所以跟json结下了缘。
前端中json大致是形如这个样子的,就是冒号左边一个名字(键),右边是具体的值(值),其实就是键值对。。是不是很简单,如果不简单也不会这么火了↓↓↓
var json = {"xxx":"xxx"};
右边可以是一个数字,可以是一个对象,可以是字符串,可以是一个数组,可以是一个json(套娃),我给大家举个例子大家就明白了,既然是容器,必然要有大的,有小的,啥都能装
装数字:
var feeInfoList = {"num":11};
通过feeInfoList.num就可以拿到num对应的值:11,很简单吧?
装字符串:var feeInfoList = {"name":"小斌哥"};
通过feeInfoList.name,就能拿到带双引号的"小斌哥"啦~
装对象:var 小斌哥= {"name":"小斌哥", "age":21, "sex":"爷们"};
小斌哥这个对象里面包含姓名、年龄和性别,多个数据可以通过逗号隔开,因此,小斌哥这个对象就生成了!!
装数组var array = {"array":[ { "name":"小斌哥", "sex":"爷们", "age":21 }, { "name":"貂蝉", "sex":"美女", "age":18 } ]};
直接看可能比较懵,但是仔细看,键是"array",值就是后面的一大坨,对吗?那一大坨拆开看,是不是就是一个个的对象,对象之间用逗号隔开了,对象里面有姓名、性别和年龄,每一个属性都是用键值对装的,并且用逗号隔开,是不是很容易呢,其实如果别人给你一大堆报文,可以用utools(一个软件),直接复制进去,就可以清楚的看到json格式了,很方便~
装json:var json = {"json":{"json":{ "json":11 } } }
哈哈,所谓套娃,就是可以在值那里一直用json,所以想拿到11,就需要通过:json.json.json.json,就能取到11了,不过这只是一个演示,除非真的有这样的需求,要不然还是不要这么玩儿,他毕竟只是一个容器,以盛装数据并且简洁易懂为主~
为什么需要JSON?
等到去了公司做前后端分离的项目的时候,大家会发现前端与后端交互大部分都是接口(其实就是用json装的一些数据),举个栗子,用户在浏览器输入了用户名和密码要登录,这个输入的用户名和密码肯定会发到后台,后台进行一系列的处理并且给前台反馈结果,画个图就是这样的:
总之前后端交互就是通过json报文,可以联想一下最开始学javaWeb的时候我们是怎么进行前后端交互的:String name = request.getParameter("name"); String pwd = request.getParameter("pwd");
有没有引起你的某种回忆,哈哈~
为什么不建议用servlet进行接收前端的数据呢?一个是负载压力大,后端成了爹了,啥都要管,权重非常高,你每次接收前台的数据都需要初始化加载servlet各种乱七八糟的东西,之后才能进行处理;第二是耦合太高,等你花了半天劲写完了代码,需求发生变更,你要改controller层、dao层、service层,该改的不该改的你都得改,体验过的童鞋麻烦点个赞。。总结
大家可以看到,通过json,非常方便快捷地把一些复杂的对象和数据进行发送。每个公司肯定都对前端的ajax进行了封装,所以不需要每次都
$(document).ready(function(){ var saveDataAry=[]; var data1={"userName":"zhangsan","address":"bj"}; var data2={"userName":"lisi","address":"nj"}; saveDataAry.push(data1); saveDataAry.push(data2); $.ajax({ type:"POST", url:"userInfo/userUpd", dataType:"json", contentType:"application/json", data:JSON.stringify(saveData), success:function(data){ ... ... } }); });
使用起来也非常的方便~
另外阿里巴巴有一个fastjson,可以非常快速地把json序列化和反序列化:String text = JSON.toJSONString(obj); //序列化 VO vo = JSON.parseObject("{...}", VO.class); //反序列化
大家可以试一下~
如果小伙伴们还有什么疑问欢迎留言~ -
什么是Json
2009-05-31 11:25:00JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,可替换XML成为AJAX程序中的数据交换格式。它有两种结构: “名称/值”对的集合(A collection of name/value pairs...JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,可替换XML成为AJAX程序中的数据交换格式。
它有两种结构:- “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
- 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
JSON是JavaScript的子集,我们在JavaScript中可以很容易的使用它。
下面是官方网站上面提供的一个例子:var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};
这个例子中,创建了一个对象,它只包含一个成员“bindings”。“bindings”中有一个包含了3个对象的数组,而这每个对象都有"ircEvent"、"method"和"regex"3个成员。
myJSONObject.bindings[0].method 的值是 "newURI"
JSON官方网站提供的一个开源的JSON解析器和字符串转换器:json.js
string.parseJSON() 解析函数,它将JSON文本解析成object或者array,可以抛出一个语法错误的异常;
array.toJSONString(),
boolean.toJSONString() ,
date.toJSONString(),
number.toJSONString(),
object.toJSONString(),
string.toJSONString(): 这几个函数可以生成JSON文本
下面写一个简单的解析和转换的例子:var str='["0","1"]';
var obj = str.parseJSON();
document.write(obj[0]);
document.write(obj[1]);
结果是01
var doc = new Array();
doc[0]='0';
doc[1]='1';
document.write(doc.toJSONString())
结果是["0","1"]
资源:
官方网站:http://www.json.org
JSON解析和转换器下载:http://www.json.org/json.jsPHP 5.2.0 新版本中默认支持一个新的 JSON extension,实现了两个函数 json_decode() 和 json_encode(),前者可以将 JSON 格式的字符串还原为 PHP native 的数组和常规对象,而后者则可以将 PHP native 的数组和常规对象编码为 JSON 格式的字符串。
------------------------------------
下面这些看得不是太明白``有高手路过的话`指点一下```
如果偶研究出来的话``在这里公布下应用说明`````````
----------------------------------
在 JSON 中我们已经介绍过其基本格式,与XML相同,JSON只是一个文字格式,只要客户端与伺服端可以剖析它,就可以利用它作为传送资料的格式,但它是JavaScript的核心特性之一,所以在JavaScript中使用JSON作为资料格式很方便,您还可以在 http://www.json.org 找到处理JSON的程式库,包括客户端JavaScript library与伺服端的library。
相较于XML,JSON在资料表示时更为简洁,例如一个表示帐户的资料,XML中可能如下表示:
<account>
<number>123456</number>
<name>Justin</name>
<balance>1000</balance>
</account>
而使用JSON可以这么表示:
var account = {
number : "123456",
name: "Justin",
balance: "1000"
};
您可以下载 http://www.json.org/json.js ,并将之加入至网页之中:
<script type="text/javascript" ></script>
json.js 中有JSON parser与JSON stringifier,例如它扩充了物件,增加了toJSONString()函式,您可以直接如下传回物件的JSON表示法:
function Account(number, name, balance) {
this.number = number;
this.name = name;
this.balance = balance;
}
var account = new Account(123456, "Justin", 1000);
alert(account.toJSONString());
您可以按下 执行范例 观看结果。
您可以把JSON表示法以POST发送至伺服端,例如:
HandleJSONEx-2.jsvar xmlHttp;
function createXMLHttpRequest() {
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
else if(window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
function prepareJSON() {
var number = document.getElementById("num").value;
var name").value;
var balance = document.getElementById("bal").value;
var account = new Object();
account.number = number;
account.name = name;
account.balance = balance;
return account.toJSONString();
}
function handleAccount() {
var json = prepareJSON();
var url = "JSONServlet?timeStamp" + new Date().getTime();
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("POST", url);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(json);
}
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
document.getElementById("response").innerHTML = xmlHttp.responseText;
}
}
}
这个程式使用者输入的帐号资讯包装为物件,并使用JSON扩充的toJSONString()将之转换为JSON格式,之后POST至伺服端,伺服端可以至 JSON in Java 下载JSON伺服端的Parser,您可以撰写以下的程式:
JSONServlet.javapackage onlyfun.caterpillar;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.*;
public class JSONServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
public JSONServlet() {
super();
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String json = readJSONString(request);
JSONObject jsonObject = null;
String responseText = null;
try {
jsonObject = new JSONObject(json);
responseText = "帐号 " + jsonObject.getString("number") + "<br/> 名称 "
+ jsonObject.getString("name") + "<br/> 餘额 " + jsonObject.getString("balance");
}
catch (JSONException e) {
e.printStackTrace();
}
response.setCharacterEncoding("UTF-8");
response.setContentType("text/xml");
response.getWriter().print(responseText);
}
private String readJSONString(HttpServletRequest request){
StringBuffer json = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while((line = reader.readLine()) != null) {
json.append(line);
}
}
catch(Exception e) {
System.out.println(e.toString());
}
return json.toString();
}
}
这个Servlet剖析JSON,并将资料取出后再传回文字回应。
如果将JSON字串传回给客户端瀏览器,则可以使用eval()将之运算为一个JavaScript物件以进行操作。
-
JSON简介:什么是JSON?
2020-04-04 13:14:16什么是JSON? JSON:JavaScript Object Notation,指JavaScript的本地对象,是一种轻量级的数据交换格式。 JSON有何用? 前面说到JSON是一种轻量级的数据交换格式,它一般用于实现前后台的数据交互。 JSON采用... -
什么是 JSON?
2018-04-28 08:56:06什么是 JSON?JSON 英文全称 JavaScript Object NotationJSON 是一种轻量级的数据交换格式。JSON是独立的语言 JSON 易于理解。有什么作用?JSON 是用于存储和传输数据的格式。JSON 通常用于服务端向网页传递数据 ... -
【JSON教科书】什么是JSON,JSON字符串有什么作用?(JSON学习总结)
2020-05-12 09:32:11文章目录@[toc]一、了解Json3.1 什么是Json二、简单Json语法2.1 语法3.2.1 Json语法记忆规则三、Json字符串的手写转换JavaBean类对象Json简单手写转换四、了解Jackson工具4.1 Jackson简介4.2 jar包介绍4.3 应用场景... -
java——json入门,什么是json
2018-07-30 15:25:021、什么是json: json是一种数据格式,对于我们互联网来说,我们服务器和客户端有大量的数据需要进行传输。以前通用的方式是xml,但是xml数据体重太大,效率低下,所以就有了另外一种数据格式,叫json json一共... -
什么是JSON Schema?
2019-05-21 20:12:29如果你曾经使用过XML Schema,RelaxNG或ASN.1,那么你很可能已经知道什么是JSON Schema,并且可以跳过本文的阅读。如果你是头一次听说,或者听过过这个词汇但不了解,那么你来对地方了。 要了解JSON Schema是什么,... -
什么是JSON?
2020-03-20 07:30:00JSON是数据交换的标准格式,它受JavaScript启发。通常,JSON是字符串或文本格式。JSON代表ĴAVA小号CRIPTöbjectÑ浮选。JSON的语法:JSON被... -
什么是JSON数据格式?
2020-09-07 15:27:36一、什么是 JSON ? JSON 是 JavaScript 对象表示法(全称JavaScript Object Notation),类似于XML. JSON 是轻量级的文本数据交换格式,它比 XML 更小、更快,更易解析。 JSON 独立于语言 JSON 具有自我描述性,更易... -
什么是Json?
2014-11-27 10:12:181.什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 JSON 具有自我描述性,更易理解 * JSON 使用 JavaScript 语法来... -
什么是json、json的作用,json的语法格式
2018-04-09 10:21:271、什么是json?json是【Java Script Object Notation标记】简介,简单来说,json就是用【JavaScript语法】写的一个【特殊】的标记【字符串】。2、json的作用(A)简化用JavaScript定义对象的方式(B)也能用在AJAX... -
什么是Json?Json支持那些数据类型?
2018-11-28 20:01:06首先说明什么是Json:Json 是一种轻量级的数据交换格式。它基于 javascript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。它的优点: 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。... -
什么是JSON ?
2019-06-14 06:23:02JSON 实例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>阿里云大学(edu.aliyun.com)</title> </head> <body> <h2>... -
【c#】什么是Json?
2019-05-30 21:23:28一:什么是Json 二:Json的用途 三:Json 的序列化与反序列化 四:Json 语法规则 五:如何使用 LitJson 插件 -
什么是JSON格式
2015-03-31 20:49:44在做高校云平台的过程中,我不难发现我们统一用了JSON格式,那么什么是JSON呢,今天我们来探个究竟。而至于百度百科上的解释,说实话我真的不怎么理解。但是通过查阅资料可以知道,json简单说就是javascript中的对象... -
json初体验---了解什么是json、json的作用,json的语法格式
2014-10-28 23:48:321、什么是json? json是【Java Script Object Notation标记】简介,简单来说,json就是用【JavaScript语法】写的一个【特殊】的标记【字符串】。 2、json的作用 (A)简化用JavaScript定义对象的方式 (B... -
什么是Json,什么是Ajax,如何创建Ajax?
2016-10-29 19:04:27什么是Json? Json一种轻量级的数据交换格式. 它是基于JavaScript的一个子集.数据格式简单,易于读写,占用带宽小 例如:{"age":"12","name":"back"} JSON 字符串转换为Json对象 var obj = eval('('+str+')'); ... -
什么是JSON+如何处理JSON字符串
2013-10-23 16:15:16【整理】什么是JSON+如何处理JSON字符串 2013 年 6 月 23 日 下午 9:28crifan已有1802人围观我来说几句 背景 之前最早的时候,也见过类似于这样的字符串: -
什么是JSON?
2010-01-05 22:48:00什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 ...
-
自动化测试Python3+Selenium3+Unittest
-
最近流行度对基于热传导的推荐模型的影响
-
react-devtools-3.zip
-
app软件测试全栈系列精品课程
-
解除B站区域限制.user.js
-
【宝物志】门店运营内容分享 第二十期
-
关于开放EAC/USDT交易对的公告
-
Testing_repository-源码
-
Python函数库深度详解(1)
-
MySQL NDB Cluster 负载均衡和高可用集群
-
ni-labview-2019-runtime-engine-x86_19.0_online_repack2.exe
-
设置NPM的仓库地址:有的公司需要设置仓库地址,否则项目依赖下载报错
-
重复提交,你是如何处理的?
-
一个跳转或关闭页面前的回调函数
-
程序员转行都干什么了(30岁程序员转前端还是测试在线测评游戏制作好)
-
华为C语言编程规范(精华总结)
-
视频监控系统中的大数据问题调查
-
MySQL 设计基础(数据库概论、初探)
-
修改手机ip地址的软件哪个好用?
-
apkhelper.exe