JSON.parse()

ការប្រើប្រាស់លម្ឡកម្ម JSON ជាទូទៅ គឺដើម្បីបញ្ជូនទិន្នន័យជាមួយសេវអេឡិចត្រូនិចវ័រ ប៊េប

នៅពេលទទួលបានទិន្នន័យពីសេវអេឡិចត្រូនិច ទិន្នន័យគឺជាអត្ថបទទាំងស្រុង

តាម JSON.parse() ការបញ្ចាក់ទិន្នន័យ ទិន្នន័យទាំងនេះនឹងក្លាយជាវត្ថុ JavaScript

ឧទាហរណ៍ – ការបញ្ចាក់ JSON

សូមស្រមើលអត្ថបទនេះ ដែលពួកយើងបានទទួលពីសេវអេឡិចត្រូនិចវ័រ ប៊េប សេវអេឡិចត្រូនិច

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

សូមប្រើមួយនៃមួយក្រុមវិទ្យាសាស្រ្ត JavaScript JSON.parse() ប្រើអត្ថបទនេះដើម្បីប្រែប្រួលអត្ថបទ ជាវត្ថុ JavaScript ទេ

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

សូមធានាថាអត្ថបទនេះត្រូវបានបញ្ជូនជារូបភាព JSON អ្នកអាចកំពុងមានកំហុងលើភាសាវិទូ

សូមប្រើវត្ថុ JavaScript នៅលើទំព័ររបស់អ្នក:

Mga halimbawa

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

亲自试一试

JSON ដែលមកពីសេវអេឡិចត្រូនិច

អ្នកអាចស្វែងរក JSON ពីសេវអេឡិចត្រូនិច ដោយប្រើការស្វែងរក AJAX。

ប្រសិនបើការឆ្លើយតបរបស់សេវអេឡិចត្រូនិច ត្រូវបានបញ្ជូនជារូបភាព JSON អ្នកអាចបញ្ចាក់រយៈពេលជាអត្ថបទ ជាវត្ថុ JavaScript ទេ

Mga halimbawa

សូមប្រើ XMLHttpRequest ដើម្បីទទួលបានទិន្នន័យពីសេវអេឡិចត្រូនិច:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    kung (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();

亲自试一试

មើល json_demo.txt

ជាអត្ថបទជាបន្តផ្តើម JSON

នៅពេលប្រើ JSON ដែលបានកសាងពីអត្ថបទជាបន្តផ្តើម JSON.parse() បន្ទាប់ពីនេះ ម៉ូដវិល នឹងបញ្ជូនអត្ថបទ JavaScript ជាអត្ថបទជាបន្តផ្តើម មិនមែនជាវត្ថុ JavaScript ទេ

Mga halimbawa

JSON ដែលបានបញ្ជូនពីសេវអេឡិចត្រូនិច គឺជាអត្ថបទជាបន្តផ្តើម

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()  {
    kung (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();

亲自试一试

Tingnan ang json_demo_array.txt

Laban

Ibali ang petsa

Hindi pinapayagan ang objek petsa sa JSON.

Kung kailangan mong isama ang petsa, isulat ito bilang string.

Pagkatapos, maaari mong iwanag muli bilang objek petsa:

Mga halimbawa

Iwanag ang string bilang petsa:

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;

亲自试一试

o maaari mong gamitin ang JSON.parse() Ang ikalawang argumento ng function, tinatawag na reviver.

Ito reviver Ang argumento ay function, ito ay susuri ang bawat katangian bago ito ibalik bilang halaga.

Mga halimbawa

Iwanag ang string bilang petsa, gamit ang function na reviver:

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

亲自试一试

Ibali ang function

Hindi pinapayagan ang function sa JSON.

Kung kailangan mong isama ang function, isulat ito bilang string.

Mamaya, maaari mong iwanag muli bilang function:

Mga halimbawa

Iginawala ang string bilang function:

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