JSON是一种非常流行的数据格式,主要用于web应用程序中,以便以通用格式传输数据。JSON是一种ASCII或非二进制格式,是人类可读的。JavaScript通常用于创建、使用和使用JSON类型 data. JSON.parse()
是用于解析JSON结构化数据的函数。
示例JSON数据
在JSON解析教程中,我们将使用以下示例JSON数据,其中包含不同的类型,如string、integer、date、array等。
{ "firstName":"Ahmet", "lastName":"Baydan", "age":7, "birth":"2012-01-01", "address":{ "streetAddress":"21 2nd Street", "city":"Ankara", "state":"Ankara", "postalCode":6543 }, "phoneNumbers":[ { "type":"home", "number":"212 555-1234" }, { "type":"fax", "number":"646 555-4567" } ]}

JSON.parse()函数语法
parse()
功能由提供 JSON
以解析JSON数据格式。有两个参数,其中一个是可选的。
JSON.parse(text[, reviver])
-
text
是函数将解析的JSON格式的数据。 -
reviver
是可选参数,其中如果是函数,则说明最初通过解析生成的值在返回之前是如何转换的。
此函数将返回 Object
对应于给定的JSON text
. 如果给定文本的格式不符合JSON格式规范 SyntaxError
将引发异常。
解析JSON
我们可以用 JSON.parse()
功能。我们将提供名为 person
就像下面一样。在本例中,我们将打印名为 firstName
, lastName
, age
.
var person = '{"firstName":"Ahmet","lastName":"Baydan","age":7,"birth":"2012-01-01"}';obj = JSON.parse(person);console.log(obj.firstName);// Output "Ahmet"console.log(obj.lastName);// Output "Baydan"console.log(obj.age);// Output "7"

解析JSON数组
我们还可以用 parse()
功能。在本例中,我们将使用一个名为 names
. 我们将解析 names
数组并在JavaScript中使用。
var person = '{"names":[{"name":"Ahmet"},{"name":"Ali"},{"name":"İsmail"}]}';obj = JSON.parse(person);console.log(obj.names[0].name);// Output "Ahmet"console.log(obj.names[1].name);// Output "Ali"console.log(obj.names[2].name);// Output "İsmail"

用JSON解析日期数据
日期是一种特殊的类型,我们必须使用它,特别是通过创建 reviver
在JavaScript编程语言中处理日期类型的数据值的函数。我们将创建一个函数来处理 birth
键,并将JSON日期数据转换为如下所示的JavaScript日期类型或格式。
var text = '{"name":"Ahmet", "birth":"2013-12-14", "city":"Ankara"}';var obj = JSON.parse(text, function (key, value) { if (key == "birth") { return new Date(value); } else { return value; }});console.log(obj.birth);// Output "Sat Dec 14 2013 02:00:00 GMT+0200 (GMT+03:00)"

用JSON解析函数
由于JavaScript是一种解释语言,我们可以用不同的方式创建和运行函数。我们还可以在JSON数据中表示函数,并在解析之后运行这些函数。在本例中,我们将用键值存储函数 hello
并在解析后运行。
var text = '{"name":"Ahmet", "age":"function(){return 10;}", "city":"Ankara"}';var obj = JSON.parse(text);obj.age = eval("(" + obj.age + ")");console.log(obj.age());// Output "Output 10"
相关文章: 什么是XML(可扩展标记语言)?