现在的位置: 首页 > 操作系统 > 正文

JSON支持什么对象/类型?

2020年02月07日 操作系统 ⁄ 共 1631字 ⁄ 字号 评论关闭

当一个面试官问你: JSON都支持什么对象/类型?你怎么回答?也许他的本意是下面这个答案:

JSON格式支持的数据类型有以下:

类型 描述

Number在JavaScript中的双精度浮点格式String双引号的反斜杠转义的UnicodeBooleantrue 或 falseArray值的有序序列Value它可以是一个字符串,一个数字,真的还是假(true/false),空(null)等Object无序集合键值对Whitespace可以使用任何一对中的令牌nullempty

但我还真不这么认为,我认为支持任意对象类型,只要是接收容器里面存在的就可以。

可以使用下面的示例来证明:

<!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><script src="../resources/js/jquery-1.8.3.min.js"></script></head><body></body></html><script> function ClassA(sColor) { this.color = sColor; this.sayColor = function() { alert(this.color); }; }

function strToJson(str) { var json = eval('(' + str + ')'); return json; }

jQuery.ajax({ type : "get", cache : false, dataType : "text", url : "simple.json", success : function(data) { alert(data); var _json = strToJson(data); _json.testcolor.sayColor(); // 这里是我们想看的效果 }, error : function() { alert('对不起,服务请求异常!'); } }); </script>

simple.json文件内容:

{ "retCode": "0000", "retMsg": "Success", "testcolor": new ClassA("red"), "retList": { "le1": { "price": "4800000", "commId": "56761" }, "le2": { "price": "4800000", "commId": "56761" } }}

注意上面代码里面的 dataType : "text"

因为Jquery源码里面是用下面的方式转换的,我们需要更加原始的方式,所以我替换成了自定义的strToJson(str)

Jquery源码:

// Evaluates a script in a global context // Workarounds based on findings by Jim Driscoll // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context globalEval: function( data ) { if ( data && core_rnotwhite.test( data ) ) { // We use execScript on Internet Explorer // We use an anonymous function so that context is window // rather than jQuery in Firefox ( window.execScript || function( data ) { window[ "eval" ].call( window, data ); } )( data ); } },

其实JSON就是字符串,需要前端进行eval转换,所以不能简单的说json支持什么对象,或者支持什么数据类型。

注意提问方式,需要更加严谨提出我们想要提问的问题。

以上就上有关JSON支持什么对象/类型?的全部内容,学步园全面介绍编程技术、操作系统、数据库、web前端技术等内容。

抱歉!评论已关闭.