我正在构建一个有多个地址的JSON。我担心JSON大小可能会变得太大,并且会成为浏览器和JS解析过程中的瓶颈。可以看出,不同的键,即。必须为每个地址重复“ID”,“FirmName”,“Address1”,“Address2”,“City”,“State”,“Zip5”,“Zip4”,这实际上大大增加了json的大小。
有什么方法可以消除在JSON中必须拥有这些密钥的需要但是每个地址都有这些值吗?如果我必须将“ID”,“Firmname”等的值表示为数组[Ex:[“0”,“firmname”,“address1here”,..]我应该关注值的顺序吗?< / p>
如果我将它们表示为值数组(而不是多个键值对),解析是否会变得模糊不清?
如果我选择直接将其表示为值数组,那么它是否是一个“好的”JSON结构(因为我必须放弃可读性)?
"Address": [
{
"-ID": "0",
"FirmName": "firmname",
"Address1": "address1here",
"Address2": "13 infinite loop",
"City": "new york",
"State": "NY",
"Zip5": "zip5here",
"Zip4": "zip4here"
},
{
"-ID": "1",
"FirmName": "firmhere",
"Address1": "address1here",
"Address2": "1 Smith Ct ",
"City": "San Predo",
"State": "CA",
"Zip5": "ziphere",
"Zip4": "ziphere1"
},
{
"-ID": "1",
"FirmName": "firmhere",
"Address1": "address1here",
"Address2": "12 John Rd ",
"City": "Newark",
"State": "PA",
"Zip5": "ziphere",
"Zip4": "ziphere1"
}
]
感谢您的投入。
答案 0 :(得分:1)
首先,大型JSON对象绝对可以crash the browser,但我们正在谈论LARGE对象。 [请参阅链接,了解有关跨浏览器性能的有用细分。]因此,首先,基于此数据和一些实际测试,您应确定对象是否太大。 (因为如果它不是太大,为什么要这么麻烦?)
现在,让我们假设您通过将数据表示为数组来体验性能的重要提升。这是现实生活;你有局限;你没有丧失性能/空间的可读性。这种变化绝对正常(我的意思是,如果你是唯一一个必须处理JSON的人,那么你还要做什么呢?)&#34;可读性&#34;由你来定义。 (但是,如果相关,应咨询您的同事和/或API用户的意见*。)
我建议在JSON对象中添加一个属性,它按顺序在数组中表示你的键:例如,
dataKey: ["ID","FirmName","Address1","Address2"]
......等等。
然后,当您解析对象时,您可以添加一个包装函数,例如ith
&#39; firmName`:
data.fetch(i, "firmName")
并且该函数可以使用此数组来获取数据,而无需将密钥顺序的密码硬编码到另一端的代码中。
这会让你的对象自我记录,显然你应该在你的官方文档中使你的架构显而易见。
希望这有帮助!
*如果这对您的用户群不起作用,我建议将对象分解成块:记录1 - 50,51 - 100等。这就是网络应用程序的趋势在现实生活中处理大量数据。