在传输之前处理JSON以删除字段名称是一个好主意吗?

时间:2014-01-11 13:11:53

标签: php json

我正在构建一个php Web服务,它使用JSON与智能手机应用程序进行通信。

我们发送给客户端的数据看起来有点像这样:

{
    "events":[
        {
            "event_id": 1,
            "event_name": "Event 1",
            "event_location_id": 1450,
            "event_timestamp": 1367515800
        },
        {
            "event_id": 2,
            "event_name": "Event 2",
            "event_location_id": 131,
            "event_timestamp": 1367515801
        },
        ETC......
    ]
}

我们发送给客户端的整个json数据块目前总共大约1mb,并且可能会变大。在我看来,大多数这些数据都是一遍又一遍重复的相同对象字段名称,这对我来说似乎是多余的。

如果我要以下面稍微不同的格式发送完全相同的数据,我估计我们只会发送大约20%的数据:

{
    "events": {
        "fields":["event_id", "event_name", "event_location_id", "event_timestamp"],
        "items":[
            [1, "Event 1", 1450, 1367515800],
            [2, "Event 2", 131, 1367515801],
            ETC........
        ]
    }
}

我很惊讶我在网上找不到任何关于此的内容,有没有其他人尝试过以这种方式构建他们的JSON?对于小得多的数据量,服务器上的额外处理是否值得权衡?是否有任何数据压缩通常在幕后发生,使这些考虑无关紧要?

2 个答案:

答案 0 :(得分:1)

有关你提到的不同格式的OData博客文章。但是,看起来它没有得到实施。

http://www.odata.org/blog/an-efficient-format-for-odata/

不同的格式也证明了更有效的CPU智能

http://mailinglist.odata.org/scripts/wa-ODATA.exe?A2=ind1103&L=ODATA&D=0&P=79521

我也很困惑,为什么不采用这种格式。

答案 1 :(得分:1)

有几种方法。你可以看看

MessagePack

HPack

虽然打包数据似乎是一个好主意,但在压缩的情况下可能无法带来预期的结果。