我使用JSON通过API为客户端发送数据。我的数据是一个 JSON 对象数组,每个对象数组中的对象具有相同的类型,并且所有键值都相同。70% 的请求被重复无用的键名消耗。有没有办法在没有这种开销的情况下发送数据?
"我知道存在某种方法,例如csv,但我想为这个问题选择通用解决方案">
例如,我的 JSON 5Mb 数组和 csv 数组只有 500kb
一个简单的 json 数组
var people = [ { firstname:"Micro", hasSocialNetworkSite: false, lastname:"Soft", site:"http://microsoft.com" }, { firstname:"Face", hasSocialNetworkSite: true, lastname:"Book", site:"http://facebook.com" }, { firstname:"Go", hasSocialNetworkSite: true, lastname:"ogle", site:"http://google.com" }, { firstname:"Twit", hasSocialNetworkSite: true, lastname:"Ter", site:"http://twitter.com" }, { firstname:"App", hasSocialNetworkSite: false, lastname:"Le", site:"http://apple.com" }, ];
和上面的这个 CSV 格式的数组
"firstname","hasSocialNetworkSite","lastname","site" "Micro","False","Soft","http://microsoft.com" "Face","True","Book","http://facebook.com" "Go","True","ogle","http://google.com" "Twit","True","Ter","http://twitter.com" "App","False","Le","http://apple.com"
您可以在示例中看到对象的 JSON 数组的性能。
为什么使用 csv 文件不是"通用解决方案"?
如果你的数据是表格形式的,你实际上并不需要像 json 或 xml 这样的分层格式。
您甚至可以通过删除双引号来进一步缩小csv文件(仅当字段中有分隔符时才需要这些引号(:
firstname,hasSocialNetworkSite,lastname,site
Micro,False,Soft,http://microsoft.com
Face,True,Book,http://facebook.com
Go,True,ogle,http://google.com
Twit,True,Ter,http://twitter.com
App,False,Le,http://apple.com