如何JSONify javascript对象的属性

时间:2013-10-07 20:53:40

标签: javascript json

我正在通过我的javascript类'属性进行“手动”运行以形成JSON,如下所示。它感觉很笨拙,我会自动学习如何做到这一点,所以如果我添加或删除任何属性,我就不必乱用'toJson'功能。

一个有用的想法能指出我如何调整以下'toJson'功能以达到这个目的的正确方向吗?

非常感谢提前。

/* Using Simple JavaScript Inheritance
* By John Resig http://ejohn.org/
* MIT Licensed.*/
var LogEntry = Class.extend({
    init: function (_conferenceId, _tokenId, _logType, _logValue) {
        this.dato = new Date();
        this.logValue = _logValue;
        this.logType = _logType;
        this.conferenceId = _conferenceId;
        this.tokenId = _tokenId;
    },
    toJson: function () {
        // ?
        var jsonStringBuilder = '{ ';
        jsonStringBuilder += '"dato": ' + this.dato.toString() + ',';
        jsonStringBuilder += '"conferenceId": ' + this.conferenceId + ',';
        if (this.tokenId== null) {
            jsonStringBuilder += '"tokenId":null,';
        }
        else {
            jsonStringBuilder += '"tokenId": ' + _tokenId + ',';
        }
        jsonStringBuilder += '"logValue": ' + this.logValue + ',';
        jsonStringBuilder += '"logType": ' + this.logType;
        jsonStringBuilder += '}';

        return jsonStringBuilder;
        }
});

3 个答案:

答案 0 :(得分:48)

JSON.stringify是您正在寻找的功能。

某些very old browsers本身并未提供JSON对象,但您可以对这些浏览器使用a shim library

答案 1 :(得分:7)

我认为你正在寻找JSON.stringify()

答案 2 :(得分:2)

如果需要,您可以使用stringify。 Javascript也非常酷,允许你传递上下文摘要,所以你真的不需要像你一样定义类成员。我不知道你的目标是什么,但请检查一下:

function foo(context) { 
    dosomething(context.bar);
}

您可以使用简单的声明动态添加任意数量的成员,使上下文成为JSON对象,如下所示:

context.bar = "hello world";

这样当你将'context'传递给服务器时,就没有必要对它进行“字符串化”(假设你的后端框架有某种类型的JSON解析)。

编辑:我有点偏离主题,我只是讨厌在JS中看到长串的参数