我正在读取一个巨大的数字文件,并且,为了“效率”,将结果收集在一个看起来像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对象有一堆对象。有更清洁的选择吗?
答案 0 :(得分:0)
怎么样
foo.toJSON = function() {
return {
realArray: this.realArray,
fakeArray: eval(this.fakeArray)
};
};
这可能会耗尽你已经实现的任何效率......