你能用最简单的词语来解释吗?
最好使用演示脚本。
答案 0 :(得分:19)
JSON是一种共享数据的方式(通常在浏览器和服务器之间)。
JavaScript允许以两种方式存储值集合:
//arrays:
[value, value, value]
//objects:
{key:value, key:value, key:value}
在某些时候,一位名叫Doug的大师意识到将数据发送到已经像对象一样设置的JavaScript通常是最有效的。 [而不是PHP发送逗号分隔的字符串,后期数据,XML,甚至HTML,所有这些都必须由JavaScript精心解析]。
所以他把这个想法称为JSON,为它写了一个规范,标准诞生了。
例如,假设您的login.php脚本应该返回自注册以来的用户名,总帖子和天数:
//XML
"<xml..><details>\
<user>Jim</user><posts>239</posts><since>Jan09</since>\
</details>"
//POSTData
"user=Jim&posts=239&since=Jan09"
//JSON
"{user:'Jim', posts:239, since:'Jan09'}"
最后一个可以很容易地被JS解析(使用eval
),并且可以直观地使用细节:
var user = details.user;
编辑:
正确地指出,要成为有效的JSON,所有字符串都必须加双引号。
这样做是为了防止JS在保留关键字上呱呱叫(在JS中,可能不会使用某些单词,例如class
,除非它们被引用。因此{class:'mike'}
不能使用。)
还应该指出,PHP 5.2+具有可用于创建或解析JSON的函数:
<?php
$arr = array ('a'=>'ay','b'=>'bee','c'=>'cee');
echo json_encode($arr); //outputs {"a":"ay","b":"bee","c":"cee"}
?>
如果JSON有效,json_decode
函数将起作用,因此有时重要的是使这些双引号正确。
答案 1 :(得分:12)
它基本上是一种在文本中描述对象的方式 - 基于文本的序列化格式。然而,它的美妙之处在于它也只是普通的JavaScript。 JavaScript的语法允许以非常简洁的格式初始化对象,并且该格式也很容易在其他语言中生成/解析。
因此,您可以在JavaScript中进行“内置”反序列化(即您可以将文本解释为代码 1 )而无需额外的库,而其他平台可以创建它,通常使用库。 (通常,Web服务器将为浏览器生成JSON以进行解释。)
1 这假设您完全信任您的数据源 - 当然,从安全角度来看,执行任意文本代码是非常危险的。
答案 2 :(得分:3)
JSON是声明数据结构的Javascript源代码,通常由Web服务器发送到浏览器。浏览器通过普通的javascript解析器运行代码,弹出数据结构。
Javascript声明可能如下所示:
var myvar = {"column1": "valuie1"};
^^^^^^^^^^^^^^^^^^^^^^
用^^^加下划线的部分就是所谓的JSON。
在早期,一些Javascript会从服务器获取文本并解析它:
var myvar = eval('(' + textfromserver + ')');
由于eval是危险的,现在更经常使用,如:
var myObject = JSON.parse(myJSONtext);
这是一个黑客,所以很多人发现有用,他们使它成为一个标准。有关详细说明,请参阅this wikepedia page。
答案 3 :(得分:1)
JSON是创建数据结构的Javascript源代码。
答案 4 :(得分:0)
我会尽量简单。如果您熟悉XML,那么它原则上就像XML一样,它以易于阅读的方式为人类和程序存储数据。它被标记为“数据交换格式”,因为您将看到它用作在一个程序和另一个程序之间移动数据的中介。
例如,您可能拥有某个数据库,您希望其他人从他们自己的程序中获取信息并在其中使用。您可以通过编写某种JSON层来限制其访问权限,而不是让他们完全访问数据库。然后,人们可以像使用RSS提要一样访问JSON。现实生活中的例子:雅虎为他们的搜索引擎提供了一个JSON层,这样人们就可以编写可以运行雅虎搜索的桌面小部件(或其他任何东西),并将结果直接发送到桌面小部件。
使用类似JSON之类的丑陋替代方案可能是让您的程序获取网页的HTML内容并以某种方式找到您需要的信息。 (如果网站的HTML布局发生变化,则必须更改程序。)
答案 5 :(得分:0)
如果你想看到几乎所有内容,请观看此视频演示JSON Click here to see the JSON video
JSON(Javascript对象表示法)是一种简单的数据交换格式,有助于在JavaScript和服务器端技术(如Servlet,JSP,WCF,ASP.Net等)之间进行通信。
JSON的格式如下所示。以下格式表示具有“CustomerCode”和“CustomerName”属性的“Customer”对象。
![{"CustomerCode":"1001","CustomerName":"Shiv"}][2]
现在这种格式可以通过javascript轻松使用并转换为javascript对象。请看上面的图,我们已经将JSON提供给javascript变量,您可以看到如何使用“CustomerCode”和“CustomerName”属性评估javascript对象。
如果你看一下网络架构,它有两部分浏览器和服务器。在浏览器端,Javascript是最突出和最成熟的语言,而在服务器端,您有不同的技术,如JSP,ASP.NET,PHP等。
因此,如果服务器端技术发出JSON格式,可以很容易地转换为javascript对象,这将真正简化多个服务器端技术和javascript语言之间的通信。
答案 6 :(得分:0)
JSON (JavaScript Object Notation)是一种轻量级格式,用于数据交换。它也是JavaScript的Object Notation的一个子集(objects
在JavaScript中构建的方式)。
JSON是一种以这种方式序列化的方式,它成为JavaScript代码。执行时(使用eval或其他方式),此代码创建并返回包含序列化数据的JavaScript对象。这是可用的,因为JavaScript允许以下语法:
var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements
var MyObject = {
'StringProperty' : 'Value',
'IntProperty' : 12,
'ArrayProperty' : [ 1, 2, 3],
'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' }
}; // MyObject is now an object with property values set.
您可以将此用于多种用途。首先,它是将数据从服务器后端传递到JavaScript代码的一种舒适方式。因此,这通常用于AJAX。
您还可以将其用作独立的序列化机制,这种机制比XML更简单,占用的空间更少。存在许多库,允许您在JSON中为各种编程语言序列化和反序列化对象。
这是一篇非常快速简洁的文章。 的 http://secretgeek.net/json_3mins.asp 强>
(thnx to mson,Vilx)