Json.NET (Newtonsoft.Json) - Deux "propriétés" avec le même nom?

Je code en C# pour le .NET Framework 3.5.

Je suis en train d'analyser certains Json pour un JObject.

Le Json est comme suit:

{
    "TBox": {
        "Name": "SmallBox",
        "Length": 1,
        "Width": 1,
        "Height": 2 },
    "TBox": {
        "Name": "MedBox",
        "Length": 5,
        "Width": 10,
        "Height": 10 },
    "TBox": {
        "Name": "LargeBox",
        "Length": 20,
        "Width": 20,
        "Height": 10 }
}

Quand j'essaie d'analyser ce Json pour un JObject, le JObject ne sait que sur LargeBox. Les informations pour SmallBox et MedBox est perdu. Évidemment, ce n'est parce que c'est l'interprétation de "TBox" comme une propriété, et la propriété est d'être écrasées.

Je reçois ce Json à partir d'un service qui est codé en Delphi. Je suis en train de créer un C# proxy pour ce service. Sur le Delphi côté des choses, le "TBox" est considéré comme le type de l'objet retourné. L'intérieur des propriétés ("Nom", "Longueur", "Largeur", "Hauteur") sont alors comprises comme des propriétés.

Je peut sérialiser et désérialiser une "TBox' objet qui a le Nom, la Longueur, la Largeur et la Hauteur. C'est très bien.

Ce que je veux faire est de parcourir toutes les TBox les sections de manière à extraire les trois chaînes Json.

Première:

{
    "Name": "SmallBox",
    "Length": 1,
    "Width": 1,
    "Height": 2 }

Deuxième:

{
    "Name": "MedBox"
    "Length": 5,
    "Width": 10,
    "Height": 10 }

Troisième:

{
    "Name": "LargeBox"
    "Length": 20,
    "Width": 20,
    "Height": 10 }

Une fois que j'ai ces chaînes, je peut sérialiser et désérialiser à mon cœur de contenu.

Je suis la recherche Newtonsoft.Json pour être très bon. Je ne veux vraiment pas aller faire du tort à d'autres cadres si je peux l'éviter.

Toute aide serait grandement appréciée.

J'ai très limitée d'entrée à des modifications qui peuvent être faites sur le serveur.

OriginalL'auteur Ubiquitous Che | 2010-10-06