`
123003473
  • 浏览: 1060276 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JS对象序列化为JSON对象

 
阅读更多
    /** 
     * JSON 解析类 
     * Copyright (c) 2010 YaoYiLang  
     * @email  redrainyi@gmail.com 
     * @datetime 2008-04-18 
     * @version 1.0 
     *  
     * 方法: 
     * 将JSON字符串解码为页面可识别的object对象 
     * @param {String} json The JSON string 
     * @return {Object} The resulting object  
     * Object o = JSONUtil.decode(json); 
     *  
     * 将JS对象序列化为JSON字符串 
     * @param {Mixed} o The variable to decode 
     * @return {String} The JSON string 
     * String json = JSONUtil.encode(o); 
     */  
      
    var JSONUtil;  
    if (!JSONUtil) {  
        JSONUtil = {};  
    }  
    JSONUtil.decode = function(json) {  
        try {  
            return eval("\u0028" + json + '\u0029');  
        } catch (exception) {  
            return eval("\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064");  
        }  
    };  
    JSONUtil.encode = (function() {  
        var $ = !!{}.hasOwnProperty, _ = function($) {  
            return $ < 10 ? "0" + $ : $  
        }, A = {  
            "\b" : "\\b",  
            "\t" : "\\t",  
            "\n" : "\\n",  
            "\f" : "\\f",  
            "\r" : "\\r",  
            "\"" : "\\\"",  
            "\\" : "\\\\"  
        };  
        return (function(C) {  
            if (typeof C == "\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064" || C === null)  
                return "null";  
            else if (Object.prototype.toString.call(C) === "\u005b\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0041\u0072\u0072\u0061\u0079\u005d") {  
                var B = ["\u005b"], G, E, D = C.length, F;  
                for (E = 0; E < D; E += 1) {  
                    F = C[E];  
                    switch (typeof F) {  
                        case "\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064" :  
                        case "\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e" :  
                        case "\u0075\u006e\u006b\u006e\u006f\u0077\u006e" :  
                            break;  
                        default :  
                            if (G)  
                                B.push("\u002c");  
                            B.push(F === null ? "null" : this.encode(F));  
                            G = true  
                    }  
                }  
                B.push("\u005d");  
                return B.join("")  
            } else if ((Object.prototype.toString.call(C) === "\u005b\u006f\u0062\u006a\u0065\u0063\u0074\u0020\u0044\u0061\u0074\u0065\u005d"))  
                return "\"" + C.getFullYear() + "-" + _(C.getMonth() + 1) + "-" + _(C.getDate()) + "T" + _(C.getHours()) + ":" + _(C.getMinutes()) + ":" + _(C.getSeconds()) + "\"";  
            else if (typeof C == "\u0073\u0074\u0072\u0069\u006e\u0067") {  
                if (/["\\\x00-\x1f]/.test(C))  
                    return "\"" + C.replace(/([\x00-\x1f\\"])/g, function(B, _) {  
                        var $ = A[_];  
                        if ($)  
                            return $;  
                        $ = _.charCodeAt();  
                        return "\\u00" + Math.floor($ / 16).toString(16) + ($ % 16).toString(16)  
                    }) + "\"";  
                return "\"" + C + "\""  
            } else if (typeof C == "\u006e\u0075\u006d\u0062\u0065\u0072")  
                return isFinite(C) ? String(C) : "null";  
            else if (typeof C == "\u0062\u006f\u006f\u006c\u0065\u0061\u006e")  
                return String(C);  
            else {  
                B = ["\u007b"], G, E, F;  
                for (E in C)  
                    if (!$ || C.hasOwnProperty(E)) {  
                        F = C[E];  
                        if (F === null)  
                            continue;  
                        switch (typeof F) {  
                            case "\u0075\u006e\u0064\u0065\u0066\u0069\u006e\u0065\u0064" :  
                            case "\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e" :  
                            case "\u0075\u006e\u006b\u006e\u006f\u0077\u006e" :  
                                break;  
                            default :  
                                if (G)  
                                    B.push("\u002c");  
                                B.push(this.encode(E), "\u003a", this.encode(F));  
                                G = true  
                        }  
                    }  
                B.push("\u007d");  
                return B.join("")  
            }  
        })  
    })();  
    window.JSONUtil = JSONUtil;  

【转载】http://relucent.iteye.com/blog/646016
分享到:
评论

相关推荐

    将javascript序列化为json

    标题"将javascript序列化为json"指的就是使用JavaScript的内置功能或扩展方法,将JavaScript对象转换为JSON字符串。在JavaScript标准库中,有一个内建的全局函数`JSON.stringify()`,用于将JavaScript值转换为JSON...

    将表单序列化为json对象

    ### 将表单序列化为JSON对象:深入解析与应用 #### 一、知识点概述 在Web开发中,经常需要处理HTML表单数据,并将其发送到服务器进行进一步处理。传统的做法是通过`form`标签的`submit`事件来提交表单数据,但这种...

    c++反射 类序列化为json

    在C++中,将类序列化为JSON意味着将类的实例数据转换为JSON字符串,以便于存储、传输或与其他系统交互。反序列化则是将JSON字符串恢复为原来的类实例。 使用RTTR实现C++类到JSON的序列化,首先需要对目标类使用RTTR...

    iOS objective-c 实体类对象的序列化为Json及反序列化

    Objective-C的实体类对象序列化和反序列化是数据处理的关键环节,它涉及到如何将内存中的对象转换为可存储或传输的数据格式,如JSON(JavaScript Object Notation),以及如何将接收到的JSON数据还原为对象。JSON因...

    关于XML、JSON的序列化、发序列化对象或集合

    例如,在`SerializerToObject&lt;T&gt;`方法中,我们首先创建了一个`DataContractJsonSerializer`对象,然后使用该对象的`WriteObject`方法将对象序列化为JSON,并将其写入到流中。最后,我们将流转换为字符串,并返回该...

    dumpjs:将任何 JS 对象序列化和反序列化为 JSON

    有时您需要将对象序列化为 JSON 并再次反序列化它们。 但是 JSON stringify/parse 是不够的,因为你需要支持循环链接和恢复自定义对象。 Dumpjs 允许轻松序列化为 JSON 并恢复任何对象。 要点: 它处理循环链接 ...

    C++ JSON 序列化与反序列化

    // 将json对象转换为字符串 ``` **二、JSON反序列化** 反序列化是将JSON字符串恢复为C++对象的过程。继续以nlohmann/json为例: 1. 从JSON字符串创建json对象: ```cpp std::string jsonString = R"({"name":...

    JSON与js对象序列化实例详解.docx

    // 将对象序列化为JSON字符串 let parsedObj = JSON.parse(jsonString); // 将JSON字符串解析为JavaScript对象 ``` `JSON.stringify()`方法还可以接受两个可选参数:`filter`和`indent`。`filter`可以是一个函数...

    安卓 JSON实现对象和数组的相互转换

    Android应用程序经常需要将JSON字符串解析成Java对象,或者将Java对象序列化为JSON字符串。本篇文章将详细介绍如何在Android中利用Gson库实现JSON与对象、数组之间的相互转换。 Gson是Google提供的一个Java库,它...

    JS对象序列化成json数据和json数据转化为JS对象的代码

    接下来,我们重点探讨如何将JavaScript对象序列化为JSON数据,以及如何将JSON数据反序列化为JavaScript对象。 首先,理解序列化和反序列化的概念是非常必要的。序列化是将对象状态转换为可以存储或传输的格式的过程...

    c#json序列化与反序列化.doc

    首先,我们需要添加 Newtonsoft.Json 的引用,然后使用 `JsonConvert.SerializeObject` 方法将对象序列化为 JSON 字符串。 例如,我们可以定义一个 `RecordResult` 类,其中包含 `Status` 和 `Error` 两个属性: ``...

    对象转json

    例如,在C#中,可以使用Newtonsoft.Json库(Json.NET)的JsonConvert类的SerializeObject方法将.NET对象序列化为JSON字符串。 接着是“datatable”,这是一个常见的数据库表示形式,尤其是在.NET框架中。DataTable...

    json数据序列化和反序列化

    4. HTML页面与JavaScript交互:在HTML页面中,JavaScript可以用来处理用户交互,获取表单数据,然后通过Ajax请求将这些数据序列化为JSON格式发送到服务器。例如,使用jQuery的`$.ajax`方法: ```javascript let ...

    jQuery实现form表单元素序列化为json对象的方法

    总结起来,通过上述步骤,我们可以使用jQuery将HTML表单元素序列化为JSON对象,这在与服务器进行数据交互时非常有用。这个过程包括了选择表单元素、序列化为数组、处理同名元素以及将数据结构转换为JSON格式。这个...

    jsonify:每个对象都可以序列化为json

    // 将对象序列化为JSON字符串 let deserializedObj = JSON.parse(jsonString); // 将JSON字符串反序列化为对象 ``` `jsonify-master`这个文件名可能表示这是一个关于`jsonify`的项目主分支,可能包含了源代码、...

    java对象集合转json格式

    这里我们以Jackson为例,它提供了强大的功能,包括将Java对象序列化为JSON和反序列化为Java对象。 1. **引入Jackson库** 在你的项目中,你需要添加Jackson的依赖。如果是Maven项目,可以在pom.xml文件中加入以下...

    JSON序列与反序列

    2. JavaScript对象到JSON字符串:在JavaScript中,我们可以使用`JSON.stringify()`方法将JavaScript对象序列化为JSON字符串。例如: ```javascript let obj = {name: "John", age: 30, city: "New York"}; let json...

    ASPNET中JSON的序列化和反序列化的方法

    这个类可以将.NET对象序列化为JSON字符串,同样也可以将JSON字符串反序列化为.NET对象。通过这个类,我们可以创建一个序列化辅助类,如示例中的`JsonHelper`,它包含两个泛型方法:`JsonSerializer`用于序列化,`...

    对象转换成JSON和Map

    - **数据存储**:在数据库操作中,有时会将对象序列化为JSON或Map,以方便存储和检索。 - **配置管理**:配置文件通常采用JSON或Map形式,便于读取和修改。 5. **注意事项**: - **类型转换**:在转换过程中,要...

    graphql-operation-to-pojo:将 GraphQL 操作转换为普通的旧 JS 对象 (POJO),准备好序列化为 JSON

    将 GraphQL 操作转换为普通的旧 JS 对象 (POJO),准备好序列化为 JSON。 这可用于解析传递给GraphQL解析器的info参数( GraphQLResolveInfo )。 安装 npm i -S graphql-operation-to-pojo 或者: yarn add ...

Global site tag (gtag.js) - Google Analytics