在JSON中嵌套时,重复键OK

在JSON中嵌套时,重复键OK,json,Json,考虑将包从一个地址传递到另一个地址的JSON表示。简化的 { "parcelId": 123, "source": { "street": "123 Main Street", "city": "Anytown", "state": "New York" }, "destination": { "street": "456 Avenue B", "city": "Elsewhere",

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

{
    "parcelId": 123,
    "source": {
        "street": "123 Main Street",
        "city": "Anytown",
        "state": "New York"
    },
    "destination": {
        "street": "456 Avenue B",
        "city": "Elsewhere",
        "state": "New Jersey"
    }
}
我相当确信键“street”、“city”和“state”可以合法地嵌套在“source”和“destination”对象中。是否存在不应重复密钥名称的技术原因

是否存在不应重复密钥名称的技术原因

不,我觉得很合理

e、 g.如果我序列化一个Scala/Java对象,该对象可能看起来像:

class Delivery {
  val parcelId : String
  val source : Address
  val destination : Address
}
地址
对象的字段名在这里是相同的

是否存在不应重复密钥名称的技术原因

不,我觉得很合理

e、 g.如果我序列化一个Scala/Java对象,该对象可能看起来像:

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

地址
对象的字段名在这里是相同的。

在JSON中,重复的属性键是不同对象的一部分,这没有什么错

您的JSON示例非常有效


这只是他们处于同一水平时的问题

例如,两个
对象:

{
    "parcelId": 123,
    "source": {
        "street": "123 Main Street",
        "city": "Anytown",
        "state": "New York"
    },
    "source": {
        "street": "456 Avenue B",
        "city": "Elsewhere",
        "state": "New Jersey"
    }
}
或一个对象内的两个
街道
属性:

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

拥有作为JSON中不同对象一部分的重复属性键没有什么错

您的JSON示例非常有效


这只是他们处于同一水平时的问题

例如,两个
对象:

{
    "parcelId": 123,
    "source": {
        "street": "123 Main Street",
        "city": "Anytown",
        "state": "New York"
    },
    "source": {
        "street": "456 Avenue B",
        "city": "Elsewhere",
        "state": "New Jersey"
    }
}
或一个对象内的两个
街道
属性:

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

不。如果您有
delivery.street
,然后是另一个
delivery.street
,这会让人困惑。但你没有。您有
delivery.source.street
delivery.destination.street
。基本上,
street
键现在正在寻址一个完全不同的对象。

否。如果您有
delivery.street
,然后是另一个
delivery.street
,这将令人困惑。但你没有。您有
delivery.source.street
delivery.destination.street
。基本上,key
street
现在正在寻址一个完全不同的对象。

Short:No。是什么让你怀疑你能在JSON的不同部分重用这些键?Short:No。是什么让你怀疑你能在JSON的不同部分重用这些键?