你的位置:首页 > 软件开发 > Java > 原生JS:JSON对象详解

原生JS:JSON对象详解

发布时间:2016-09-07 17:00:10
JSON对象 支持到IE8,旧版的IE需要Polyfill本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript)JSON对象本身不能被调用或者作为构造函数,除了它的这 ...

JSON对象 支持到IE8,旧版的IE需要Polyfill

本文参考MDN做的详细整理,方便大家参考[MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript)

JSON对象本身不能被调用或者作为构造函数,除了它的这两个方法属性外 JSON 对象本身并没有什么有用的功能。

每个JSON对象,就是一个值。要么是简单类型的值,要么是复合类型的值,但是只能是一个值,不能是两个或更多的值。这就是说,每个JSON文档只能包含一个值。

描述

JSON 是一种用来序列化对象、数组、数值、字符串、布尔值和 null 的语法。它基于 JavaScript 语法,但是又有区别:一些 JavaScript 值不是 JSON,而某些 JSON 不是 JavaScript 值。参考 JSON: The JavaScript subset that isn't。

JavaScript 与 JSON 的区别

JSON对值的类型和格式有严格的规定。

  1. 复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
  2. 简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。
  3. 字符串必须使用双引号表示,不能使用单引号。
  4. 对象的键名必须放在双引号里面。
  5. 数组或对象最后一个成员的后面,不能加逗号。

JavaScript类型

JSON与之区别

对象和数组

属性名称必须用双引号包裹;最后一个属性后面不能有逗号。

数值

前导0不能使用(在 JSON.stringify 中将会被忽略,在 JSON.parse 会抛出错误);小数点后面至少有一个数字。

字符串

只有有限的字符能够被转义;不允许某些控制字符;但允许使用Unicode 行分隔符 (U+2028) 和段落分隔符 (U+2029) ; 字符串必须用双引号括起来。 在 Javascript 中,下面的示例中 JSON.parse() 能够正常解析但 SyntaxError 会出错:

var code = '"\u2028\u2029"';

JSON.parse(code); // works fine

eval(code); // fails

 

 

 

完整的JSON语法如下:

  1. JSON = null
  2. or true or false
  3. or JSONNumber
  4. or JSONString
  5. or JSONObject
  6. or JSONArray
  7. JSONNumber = - PositiveNumber
  8. or PositiveNumber
  9. PositiveNumber = DecimalNumber
  10. or DecimalNumber . Digits
  11. or DecimalNumber . Digits ExponentPart
  12. or DecimalNumber ExponentPart
  13. DecimalNumber = 0
  14. or OneToNine Digits
  15. ExponentPart = e Exponent
  16. or E Exponent
  17. Exponent = Digits
  18. or + Digits
  19. or - Digits
  20. Digits = Digit
  21. or Digits Digit
  22. Digit = 0 through 9
  23. OneToNine = 1 through 9
  24. JSONString = ""
  25. or " StringCharacters "
  26. StringCharacters = StringCharacter
  27. or StringCharacters StringCharacter
  28. StringCharacter = any character
  29. except " or \\ or U+0000 through U+001F
  30. or EscapeSequence
  31. EscapeSequence = \\" or \\/ or \\\\ or \\b or \\f or \\n or \\r or \\t
  32. or \\u HexDigit HexDigit HexDigit HexDigit
  33. HexDigit = 0 through 9
  34. or A through F
  35. or a through f
  36. JSONObject = { }
  37. or { Members }
  38. Members = JSONString : JSON
  39. or Members , JSONString : JSON
  40. JSONArray = [ ]
  41. or [ ArrayElements ]
  42. ArrayElements = JSON
  43. or ArrayElements , JSON
JSON.parse('{"1": 1, "2": 2,"3": {"4": 4, "5": {"6": 6}}}', function (k, v) {

 

JSON.stringify(value[, replacer [, space]])

将任意的 JavaScript 值序列化成 JSON 字符串。若转换的函数被指定,则被序列化的值的每个属性都会经过该函数的转换和处理;若转换的数组被指定,只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中。

  • value 将要序列化成 JSON 字符串的值。

     

    海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

    原标题:原生JS:JSON对象详解

    关键词:JS

JS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。