JSON 텍스트 형식은 JavaScript 개체를 생성하는 코드와 구문상 동일합니다.
이러한 유사성으로 인해 JavaScript 프로그램은 내장된 eval() 함수를 사용하여 파서 없이도 JSON 데이터에서 기본 JavaScript 객체를 생성할 수 있습니다.
JSON 구문 규칙:
이름/값 쌍의 데이터
쉼표로 구분된 데이터
중괄호는 객체를 유지합니다
대괄호는 배열을 유지합니다
소개 JSON 이름/값 쌍
"name":"张飞", "age":23
Json 값은 다음과 같습니다.
숫자(정수 또는 부동 소수점 숫자)
문자열(큰따옴표로 묶음)
논리값(true 또는 false)
배열(대괄호)
객체(중괄호)
Json을 JavaScript 객체로 변환하는 방법은 다음과 같습니다.
eval( " (" + str + ")");
코드 예:
<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 및 JavaScript 개체 변환
JSON을 javascript 객체로
//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 객체를 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(',') + '}'; }
>