>  기사  >  웹 프론트엔드  >  js에서 Json의 구문 및 형식에 대한 자세한 설명

js에서 Json의 구문 및 형식에 대한 자세한 설명

高洛峰
高洛峰원래의
2016-12-05 16:52:00741검색

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:&#39;测试&#39;}";
  var obj0 = eval("(" + str0 + ")");
  alert(obj0.employees);   //输出测试
 
  var str = "{name:&#39;张三&#39;,Age:21}";
  var obj = eval("(" + str + ")");
  document.write(obj.name + obj.Age); //输出 张三21
  alert(obj.name);
 
  //别看下面那段Json长,其实是一个对象,属性employees的值是一个对象数组。和上面的相比,只是name:张三 中的"张三"字符串 变成了对象数组而已
  var str2 = &#39;{ "employees" : [&#39; + &#39;{ "firstName":"Bill" , "lastName":"Gates" },&#39; + &#39;{ "firstName":"George" , "lastName":"Bush" },&#39; + &#39;{ "firstName":"Thomas" , "lastName":"Carter" } ]}&#39;;
  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 == &#39;object&#39; && s != null) return json2str(s);
  return /^(string|number)$/.test(typeof s) ? "&#39;" + s + "&#39;" : s;
 }
 for (var i in o) arr.push("&#39;" + i + "&#39;:" + fmt(o[i]));
 return &#39;{&#39; + arr.join(&#39;,&#39;) + &#39;}&#39;;
}

>


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.