-1

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

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

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]
}

我的谷歌搜索和初步测试都失败了。 在这个问题中,他试图创建非法 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 对象有一堆对象。有没有更清洁的替代品?

4

1 回答 1

0

怎么样

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

这可能会消耗您已实现的任何效率...

于 2013-11-10T21:22:37.823 回答