如何删除String的JSON.stringify()输出周围的引号

时间:2013-11-10 20:51:53

标签: javascript json

我正在读取一个巨大的数字文件,并且,为了“效率”,将结果收集在一个看起来像2D数组的字符串中,而不是实际数组。但是,我想生成JSON,其中值看起来像一个数组,而不是一个String。

作为一个高度简化的例子,如果对象是

var foo = {
       realArray: [1,2,3,4,5],
       fakeArray: '[1,2,3,4,5]'    // String pretending to be an array
    }

我希望两个字段的JSON输出相同,以便稍后解析生成的json的程序将“看到”一个数组,而不是字符串。

{
   realArray: [1,2,3,4,5],
   fakeArray: [1,2,3,4,5]
}

我的谷歌搜索和初步测试都失败了。 In this question他正试图创建非法的JSON。他正在使用Java / GSON。我认为,我正在创造“合法”的JSON。

作为一个测试,我尝试覆盖toJSON(),如下所示删除前导“,但是当你调用JSON.stringify(foo)时,它会删除前导[并保留引用!

foo.toJSON = function() {
    return {
        realArray: this.realArray,
        fakeArray: this.fakeArray.substring(1)
    };
};

产量

{
   "realArray":[1,2,3,4,5],
   "fakeArray":"1,2,3,4,5]"    <<< removed the [, not the "
}

目前我可以用非常强力的方式做到这一点,将foo中每个字段的一堆较小的JSON.stringify连接成一个巨大的长字符串,但这很乏味,因为真正的foo对象有一堆对象。有更清洁的选择吗?

1 个答案:

答案 0 :(得分:0)

怎么样

foo.toJSON = function() {
    return {
        realArray: this.realArray,
        fakeArray: eval(this.fakeArray)
    };
};

这可能会耗尽你已经实现的任何效率......