JSON Best Practice для имен собственности - PullRequest
2 голосов
/ 14 января 2010

Является ли "наилучшей практикой" использование GUID в качестве имени свойства? (см. образец 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" 
        }
    ]
}

Мысли

Ответы [ 2 ]

1 голос
/ 14 января 2010

Как указывает SLaks, это зависит от того, как вы пытаетесь использовать 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;
    }
}
1 голос
/ 14 января 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...