JSON.parse()

JSON 的常规用途是同 web 服务器进行数据传输。

Kama ukurasa wa kuzitoa data wa web, data zaidi ya kawaida ni rangi ya jina la jirani:

Kwa sababu: JSON.parse() Kupima data, data hizi inatoa msingi wa JavaScript wa kina:

Mfano – Kupima JSON

Tafuta tu kwamba tunatoa uigizo huu kutoka kwenye mshahara wa kuzitoa data wa web:

'{ "name":"Bill Gates", "age":62, "city":"Seattle"}'

Tumia msaada wa JavaScript: JSON.parse() Tumia msaada wa JavaScript kubadilisha matukio:

var obj = JSON.parse('{ "name":"Bill Gates", "age":62, "city":"Seattle"}');

Hakikisha kwamba uandikie uigizo huu katika muundo wa JSON, inakosa kwa sababu ya kufikia kosa maadili:

Tumia msingi wa JavaScript kwenye ukurasa wako:

实例

<p id="demo"></p> 
<script>
 document.getElementById("demo").innerHTML = obj.name + ", " + obj.age; 
</script>

亲自试一试

JSON ya mshahara:

Unaweza kutumia AJAX kumwambia mshahara wa kuzitoa JSON:

Inafikia kwa sababu matokeo ya mshahara inaandikwa katika muundo wa JSON, unaweza kupima rangi ya jina la jirani kama msingi wa JavaScript wa kina:

实例

Tumia XMLHttpRequest kuwasiliana na mshahara wa kuzitoa data:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    if (this.readyState == 4 && this.status == 200) {
        myObj = JSON.parse(this.responseText);
        document.getElementById("demo").innerHTML = myObj.name;
    }
};
xmlhttp.open("GET", "json_demo.txt", true);
xmlhttp.send();

亲自试一试

Tazama json_demo.txt:

Kama msingi wa jina la jirani wa JSON:

Kwa kutumia JSON ambao una jina kama jirani kutoka kwenye msingi wa jina la jirani: JSON.parse() Baada ya, mtu huu wa kuhusiana na msingi hurejea msingi wa JavaScript wa jina la jirani, haliwezi kurejea msingi wa JavaScript wa kina:

实例

JSON ya yana kuitoka kwenye mshahara ni msingi:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    if (this.readyState == 4 && this.status == 200) {
        myArr =  JSON.parse(this.responseText);
        document.getElementById("demo").innerHTML  = myArr[0];
    }
};
xmlhttp.open("GET", "json_demo_array.txt", true);
xmlhttp.send();

亲自试一试

查看 json_demo_array.txt

例外

解析日期

JSON 中不允许日期对象。

如果您需要包含日期,请写为字符串。

之后您可以将其转换回日期对象:

实例

把字符串转换为日期:

var text = '{ "name":"Bill Gates", "birth":"1955-10-28", "city":"Seattle"}';
var obj = JSON.parse(text);
obj.birth = new Date(obj.birth);
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;

亲自试一试

或者您可以已使用 JSON.parse() 函数的第二个参数,被称为 reviver

这个 reviver 参数是函数,在返回值之前,它会检查每个属性。

实例

将字符串转换为日期,使用 reviver 函数:

var text = '{ "name":"Bill Gates", "birth":"1955-10-28", "city":"Seattle"}';
var obj = JSON.parse(text, function (key, value) {
    if  (key == "birth") {
        return new Date(value);
    } else {
         return value;
   });
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;

亲自试一试

解析函数

JSON 中不允许函数。

如果您需要包含函数,请把它写作字符串。

稍后您可以把它转换回函数:

实例

将字符串转换为函数:

var text = '{ "name":"Bill Gates", "age":"function () {return 62;}", "city":"Seattle"}';
var obj = JSON.parse(text);
obj.age = eval("(" + obj.age + ")");
document.getElementById("demo").innerHTML = obj.name + ", " +  obj.age();

亲自试一试

您应该避免在 JSON 中使用函数,函数会丢失它们的作用域,而且您还需要使用 eval() 把它们转换回函数。

浏览器支持

所有主流浏览器以及最新的 ECMAScript (JavaScript) 标准均包含 JSON.parse() 函数:

下表中的数字指定了完全支持 JSON.parse() 函数的首个浏览器版本:

Yes 8.0 3.5 4.0 10.0

对于更老的浏览器,以下地址中的 JavaScript 库是可用的:

https://github.com/douglascrockford/JSON-js