表示JSON的最佳方式,该JSON具有其数组中每个元素的重复键

时间:2016-05-30 16:23:58

标签: javascript arrays json

我正在构建一个有多个地址的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"
        }
    ]
    

感谢您的投入。

1 个答案:

答案 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等。这就是网络应用程序的趋势在现实生活中处理大量数据。