对象的 JSON 数组是无用的(效率不高)



我使用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

最新更新