JSON Stringfy只有一些属性

Gui*_*aes 1 javascript json

我有这个对象:

{
    name: "",            
    email: "",
    phone: "",
    protocol: "",
    area: "",
    subject: "",
    message: "",
    validation: this.validator.valid()
}
Run Code Online (Sandbox Code Playgroud)

我想将其转换为JSON,但是我不想要该validation属性。

我已经尝试了以下方法:

const test = JSON.stringify(this.state);
delete test.validation;
Run Code Online (Sandbox Code Playgroud)

还有其他方法吗?

Mar*_*yer 6

JSON.stringify需要一个可以使用的替换回调。replacer函数使用一个键k,并将值v字符串化为参数。返回undefined将具有不将键包含在最终结果中的效果:

state = {
    name: "",            
    email: "",
    phone: "",
    protocol: "",
    area: "",
    subject: "",
    message: "",
    validation: "some val"
}

const test = JSON.stringify(state, (k, v) => k != 'validation' ? v : undefined);

console.log(test)
Run Code Online (Sandbox Code Playgroud)

注意:像这样使用它也会validation从任何子对象中删除密钥,这可能是您想要的,也可能不是您想要的。