2010-01-14 2 views
2

Действительно ли «лучшая практика» использовать GUID в качестве имени свойства? (См пример JSON ниже)Лучшая практика JSON для имен собственности

{ 
    "ErrorType": 0, 
    "I9e4f0477549111d997e0acd5cbb90d3f": { 
     "statusCode": "0", 
     "guid": "I9e4f0477549111d997e0acd5cbb90d3f", 
     "moreProperties": "more values" 
    }, 
    "N51D209F0505711DEA52DFAD621371B7C": { 
     "statusCode": "0", 
     "guid": "N51D209F0505711DEA52DFAD621371B7C", 
     "moreProperties": "more values" 
    } 
} 

я бы предположить, нет, потому что теперь не весь «объект» часть JSON пропал? У вас больше нет доступа к пространству имен, потому что имя свойства является случайным. И сериализация (с использованием JSON.NET) уже не однострочный.

Кроме того, повторные данные. GUID - это имя свойства, и внутри этого свойства есть еще один объект с именем свойства «guid». Нормализация данных не рассматривается.

Я не пишу этот JSON, просто поглощая его. Если бы я писал этот JSON, я бы переписал его так:

{ 
    "ErrorType": 0, 
    "guids": [ 
     { 
      "statusCode": "0", 
      "guid": "I9e4f0477549111d997e0acd5cbb90d3f", 
      "moreProperties": "more values" 
     }, 
     { 
      "statusCode": "0", 
      "guid": "N51D209F0505711DEA52DFAD621371B7C", 
      "moreProperties": "more values" 
     } 
    ] 
} 

Мысли?

+0

Мы необходимо выполнить итерацию по всему объекту, чтобы получить данные и отобразить на экране для каждого GUID. Мы используем .NET для десериализации, но другие команды в одном проекте используют Javascript. Итак, мы не выбираем и не выбираем, какие значения мы хотим для определенного GUID. В любом случае мы перебираем объект. – Jeepasaurus

ответ

1

Если вы ищете объекты по GUID в Javascript, то лучше использовать GUID в качестве ключа, позволяя вам писать obj[someGuid].

В противном случае это зависит от окружающей среды и использования; пожалуйста, предоставьте более подробную информацию.

1

Как говорит Слэкс, это зависит от того, как вы пытаетесь использовать JSON. С учетом:

allObjects = { 
    "ErrorType": 0, 
    "I9e4f0477549111d997e0acd5cbb90d3f": { 
     "statusCode": "0", 
     "guid": "I9e4f0477549111d997e0acd5cbb90d3f", 
     "moreProperties": "more values" 
    }, 
    "N51D209F0505711DEA52DFAD621371B7C": { 
     "statusCode": "0", 
     "guid": "N51D209F0505711DEA52DFAD621371B7C", 
     "moreProperties": "more values" 
    } 
} 

myguid = "N51D209F0505711DEA52DFAD621371B7C"; 

Вы можете просто получить доступ к данным, например allObjects[myguid]["moreProperties"]. Если вы сгенерировал JSON, как вы предлагаете (без Guid как ключ), и пришлось вытаскивать значение, имеющее отношение к конкретному GUID вы будете вынуждены итерацией по элементам массива и проверить GUID, как

for (var subObj in allObjects) { 
    if (subObj['guid'] = myguid) { 
     // you found it, store it and... 
     break; 
    } 
} 
Смежные вопросы