2016-12-20 18 views
0

あるアドレスから別のアドレスにパッケージを渡すためのJSON表現を考えてみましょう。簡体字、JSONでネストされた重複キーOK

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

私はキー「ストリート」、「都市」、および「状態」が法的に「ソース」と「目的地」オブジェクトの両方に入れ子にすることができることをかなり確信しています。キー名がでなく、を繰り返さなければならないという技術的な理由はありますか?

+0

ショート:いいえ、あなたはあなたがJSONの別々の部分でキーを再利用できることを疑うでしょうか? – Sirko

答えて

1

キー名を繰り返してはならないという技術的な理由はありますか?

いいえ、私には完全に合理的です。

私はスカラ座/ Javaオブジェクトを直列化された場合、そのオブジェクトは、次のようになります。

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

フィールド名Addressオブジェクトのは、ここでは同じになります。

1

JSONの異なるオブジェクトの一部である重複するプロパティキーを持つことには何も問題ありません。

JSONの例は完全に有効です。


これは、同じレベルの場合にのみ発生します。例えば

2つのsourceオブジェクト:1オブジェクト内の

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

または2 streetプロパティ:

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

いいえ、あなたがdelivery.streetし、別のdelivery.streetを持っていた場合、これは混乱を招くだろう。しかし、あなたはしません。あなたはdelivery.source.streetdelivery.destination.streetです。基本的にはキーstreetはまったく別のオブジェクトに対処しています。

関連する問題