我正在通过我的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;
}
});
答案 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中看到长串的参数