嵌套在JSON中时,重复键是OK

时间:2016-12-20 15:05:31

标签: json

考虑使用JSON表示将包从一个地址传递到另一个地址。简化的,

GoogleMapDirections to 1.1

我很确定键“street”,“city”和“state”可以合法地嵌套在“源”和“目标”对象中。是否有技术原因导致关键名称​​不重复?

3 个答案:

答案 0 :(得分:1)

  

技术原因是否不应重复关键名称?

没有。对我来说似乎很合理。

e.g。如果我是序列化Scala / Java对象,那么该对象可能如下所示:

class Delivery {
  val parcelId : String
  val source : Address
  val destination : Address
}

Address对象的字段名称在此处相同。

答案 1 :(得分:1)

在JSON中拥有重复属性键是不同对象的一部分没有任何问题。

您的JSON示例完全有效。

当它们处于同一水平时,这只是一个问题。

例如两个source个对象:

{
    "parcelId": 123,
    "source": {
        "street": "123 Main Street",
        "city": "Anytown",
        "state": "New York"
    },
    "source": {
        "street": "456 Avenue B",
        "city": "Elsewhere",
        "state": "New Jersey"
    }
}

或者一个对象中的两个street属性:

    "source": {
        "street": "456 Avenue B",
        "street": "Elsewhere",
        "state": "New Jersey"
    }

答案 2 :(得分:0)

没有。如果您有(png|jpe?g|gif),然后是delivery.street,那么这会让您感到困惑。但你没有。您有delivery.streetdelivery.source.street。基本上,键delivery.destination.street现在正在处理一个完全不同的对象。