2010-01-14 30 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 2010-01-14 17:29:16

回答

1

如果您在Javascript中使用GUID搜索對象,那麼最好將GUID用作關鍵字,從而允許您編寫obj[someGuid]

否則,這取決於環境和使用情況;請提供更多細節。

1

正如SLak指出的那樣,這取決於您如何嘗試使用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; 
    } 
}