JSON stringify省略'String'

时间:2012-11-29 02:23:28

标签: javascript json

我有这个json对象:

values: {
    username: { type: String, unique: true },
    password: { type: String }
}

运行JSON.stringify(values)时,我得到:

{"username":{"unique":true},"password":{}}

省略type: String

有任何解决方法吗?

2 个答案:

答案 0 :(得分:4)

尝试包含引号:

values: {
  username: { type: "String", unique: true },
  password: { type: "String" }
}

答案 1 :(得分:1)

JSON.stringify省略了无效JSON的值,包括undefinedFunction

如果你真的非常想要,你可以使用replacer参数(不知道这将是多少跨浏览器)并解决这个问题。该函数基本上会检查该值是否为函数,并返回函数名称。在您的示例中,它将返回"String",因为String是一个全局构造函数。

JSON.stringify(your_object, function (key, value) {
    if (typeof value === "function") {
        return value.name; // or value.toString() for the function body/declaration
    }

    return value;
});

虽然,为了清楚起见,你最好使用字符串作为你的类型,("String"而不是String)没有可以跳过的箍。