JSON支持什么对象/类型?

原文:JSON支持什么对象/类型?

当一个面试官问你: JSON都支持什么对象/类型?你怎么回答?

也许他的本意是下面这个答案:

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

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

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

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

<!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支持什么对象,或者支持什么数据类型。

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

时间: 2024-08-29 16:04:42

JSON支持什么对象/类型?的相关文章

JSON支持什么对象?

当一个面试官问你: JSON都支持什么对象/类型?你怎么回答? 也许他的本意是下面这个答案: JSON格式支持的数据类型有以下: 类型 描述 Number 在JavaScript中的双精度浮点格式 String 双引号的反斜杠转义的Unicode Boolean true 或 false Array 值的有序序列 Value 它可以是一个字符串,一个数字,真的还是假(true/false),空(null )等 Object 无序集合键值对 Whitespace 可以使用任何一对中的令牌 null

一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型;

Json.net 序列化程序会将.Net 值转换为json值,表格中是支持转换的对象类型: .net 对象类型 转换后的Json 类型 IList, IEnumerable, IList<T>, Array,datatable json数组 IDictionary, IDictionary<TKey, TValue> json对象 Object (more detail below) json对象 Json数组教程:http://www.runoob.com/json/js-jso

json与java对象的转换,以及struts2对json的支持,实现ajax技术

这两天学的东西有点多,今天抽个时间写下来,以此作为激励,这两天学了json,ajax,jQuery 一.使用第三方的工具java转换为json类型 首先就是java类型转换为json对象,首先要导入第三方工具包: 准备导入第三方jar包: >commons-beanutils-1.7.0.jar >commons-collections-3.1.jar >commons-lang-2.5.jar >commons-logging-1.1.1.jar >ezmorph-1.0.

objective-c和java下解析对象类型和数组类型JSON字符串

首先讲objective-c如何实现: 这里需要用到2个插件,一个是JSONKit,另一个是Jastor,一共包含6个文件,3个.h头文件和3个.m实现文件.在ARC的工程中如何导入不支持ARC的第三方工具请看这篇文章:iOS在支持arc的工程中,导入不支持arc的第三方的插件 具体文件在网上都比较好找,自己去下载即可. NSObject类型的json字符串转换为对象 大体的思路是这样,首先将json字符串先转化成NSDictionary,然后再通过参数是NSDictionary的初始化方法来生

Java中关于Json对象类型和字符串类型之间互相转化的问题

Java中关于Json格式转化Object,Map,Collection类型和String类型之间的转化在我们实际项目中应用的很是普遍和广泛.最近工作的过程中也是经常有,因此,自己封装了一个JsonUtil.java类. 所需要的jar包:slf4j-jdk14-1.5.6.jar,slf4j-api-1.5.6.jar------>此两个jar包是slf4j日志jar包 jackson-annotations-2.1.1.jar,jackson-core-2.1.1.jar,jackson-d

JSon_零基础_002_将List类型数组转换为JSon格式的对象字符串,返回给界面

将List类型数组转换为JSon格式的对象字符串,返回给界面 所需要导入的包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * 下一步com.west.webcourse.servlet.JavaBeanToJOSNString.java */ public class PersonInfoPo { private String name; private int age; private String sex; publ

将JSON字符串反序列化为指定的.NET对象类型

前言: 关于将JSON字符串反序列化为指定的.NET对象类型数据常见的场景主要是关于网络请求接口,获取到请求成功的响应数据.本篇主要讲的的是如何通过使用Newtonsoft.Json中的JsonConvert.DeserializeObject<T>(string value)方法将对应的JSON字符串转化为指定的.NET对象类型数据. 方法一.在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用): 如下是一组.NET后台请求接口成功获取到的复杂的JSO

js之数据类型(对象类型——单体内置对象——JSON)

JSON(Java Script Object Notation)使用JavaScript语法,是用于存储和传输数据的格式,通常用于服务端向网页传递数据.JSON格式仅仅是一个文本,文本可以被任何编程语言读取及作为数据格式传递(一种类似js中的对象格式的字符串,json它是一个字符串,只不过长的像对象)从上面的描述中我们可以看到如下知识 JSON的规则:数据放在了一对引号当中,用{}或者是[]括起来:里面的每一个数据都是以键值对表示(key:value);key必须放双引号,单引号不行:每个数据

JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象 。

JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对象.要添加System.Web.Extensions.dll的引用.该类位于System.Web.Script.Serialization命名空间下. 一.属性 MaxJsonLength 获取或设置 JavaScriptSerializer 类接受的 JSON 字符串的最大长度. Recursio