English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JSON wird verwendet, um mit Webservern Daten auszutauschen. Wenn Daten vom Webserver empfangen werden, sind sie immer Zeichenfolgen.
Die JSON.parse()-Methode parsert JSON-Zeichenfolgen, um JavaScript-Werte oder die durch die Zeichenfolge beschriebenen Objekte zu konstruieren.
Syntax:
JSON.parse(text, reviver)
Der erste Parameter gibt die Zeichenfolge an, die in JSON umgewandelt werden soll.
Der optionale zweite Parameter gibt eine Funktion an, die vor jedem Attribut im Rückgabewert überprüft wird.
Angenommen, wir erhalten folgenden Text von einem Webserver:
{"name":"Seagull", "age":22, "city":"New Delhi"
Mit dem JSON.parse()-Verfahren können wir JSON-Text in ein JavaScript-Objekt umwandeln:
var myObj = JSON.parse('{"name":"Seagull", "age":22, "city":"New Delhi"测试看看‹/›
Sie können mit AJAX-Anfragen JSON vom Server anfordern.
Wenn die Antwort des Servers im JSON-Format geschrieben ist, kann die Zeichenfolge in ein JavaScript-Objekt umgewandelt werden.
以下示例请求文件demo.json并解析响应:
var httpRequest = new XMLHttpRequest(); httpRequest.onreadystatechange = function() { if (this.readyState === 4 && this.status === 200) { var myObj = JSON.parse(this.responseText); document.getElementById("output").innerHTML = myObj.name; } }; httpRequest.open("GET", "demo.json", true); httpRequest.send();测试看看‹/›
JSON.parse()在从数组派生的JSON上使用方法,该方法将返回JavaScript数组,而不是JavaScript对象。
以下示例请求文件json_array.txt并解析响应:
var httpRequest = new XMLHttpRequest(); httpRequest.onreadystatechange = function() { if (this.readyState === 4 && this.status === 200) { var myArr = JSON.parse(this.responseText); document.getElementById("output").innerHTML = myArr[0]; } }; httpRequest.open("GET", "json_array.txt", true); httpRequest.send();测试看看‹/›
JSON中不允许使用日期对象。
如果需要包括日期,则将其写为字符串,然后稍后将其转换回日期对象。
var myJSON = '{"name":"Seagull", "birth":"1997-11-10", "city":"New Delhi"} var myObj = JSON.parse(myJSON); myObj.birth = new Date(myObj.birth); document.getElementById("output").innerHTML = myObj.name + " DOB is " + myObj.birth;测试看看‹/›
注意:将字符串转换为本地对象称为解析,而将本地对象转换为可以在网络上传输的字符串被称为字符串化。