什么是json,你能解释一下新手吗?

时间:2009-11-08 09:43:01

标签: javascript json

你能用最简单的词语来解释吗?

最好使用演示脚本。

7 个答案:

答案 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]

enter image description here

现在这种格式可以通过javascript轻松使用并转换为javascript对象。请看上面的图,我们已经将JSON提供给javascript变量,您可以看到如何使用“CustomerCode”和“CustomerName”属性评估javascript对象。

enter image description here

如果你看一下网络架构,它有两部分浏览器和服务器。在浏览器端,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)