Das JSON-Textformat ist syntaktisch identisch mit dem Code, der JavaScript-Objekte erstellt.
Aufgrund dieser Ähnlichkeit können JavaScript-Programme die integrierte Funktion eval() verwenden, um native JavaScript-Objekte aus JSON-Daten zu generieren, ohne dass ein Parser erforderlich ist.
JSON-Syntaxregeln:
Daten in Name/Wert-Paaren
Durch Kommas getrennte Daten
Geschweifte Klammern halten Objekte
Eckige Klammern halten Arrays
Einführung zu JSON-Name/Wert-Paaren
"name":"张飞", "age":23
Der Wert von Json kann sein:
Zahl (Ganzzahl oder Gleitkommazahl)
Zeichenfolge (in doppelte Anführungszeichen einzuschließen)
Logischer Wert (wahr oder falsch)
Array (in eckigen Klammern)
Objekt (in geschweiften Klammern)
Die Methode zum Konvertieren von Json in ein JavaScript-Objekt ist:
eval( " (" + str + ")");
Codebeispiel:
<html> <head> <title>Json测试</title> <script src="/Scripts/jquery-1.7.2.min.js" type="text/javascript"></script> <script type="text/javascript"> //基本上,Json返回的要么是对象,要么是数组,如果单纯返回一个字符串,那么就没有必要用Json了,因此 //Json基本就下面这些可,不过要注意双引号 var str0 = "{employees:'测试'}"; var obj0 = eval("(" + str0 + ")"); alert(obj0.employees); //输出测试 var str = "{name:'张三',Age:21}"; var obj = eval("(" + str + ")"); document.write(obj.name + obj.Age); //输出 张三21 alert(obj.name); //别看下面那段Json长,其实是一个对象,属性employees的值是一个对象数组。和上面的相比,只是name:张三 中的"张三"字符串 变成了对象数组而已 var str2 = '{ "employees" : [' + '{ "firstName":"Bill" , "lastName":"Gates" },' + '{ "firstName":"George" , "lastName":"Bush" },' + '{ "firstName":"Thomas" , "lastName":"Carter" } ]}'; var obj2 = eval("(" + str2 + ")"); alert(obj2.employees[0].firstName); //弹出 Bill var str3 = "[1,2,3,4,5,6]"; //json 数组 var obj3 = eval("(" + str3 + ")"); //输出 2 alert(obj3[1]); </script> </head> <body> <div id="div1"> </div> </body> </html>
Json- und JavaScript-Objektkonvertierung
JSON zu Javascript-Objekt
//Json转对象1 function JsonToObject(str) { return eval("(" + str + ")"); } //Json转对象2 function strToJson(str){ var json = (new Function("return " + str))(); return json; } //Json转对象3 jQuery工具函数 $.parseJSON()
Javascript-Objekt zu JSON
//javascript对象转Json function ObjectToJson(o) { var arr = []; var fmt = function(s) { if (typeof s == 'object' && s != null) return json2str(s); return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; } for (var i in o) arr.push("'" + i + "':" + fmt(o[i])); return '{' + arr.join(',') + '}'; }
>