![](/img/trans.png)
[英]java.lang.IllegalArgumentException: JSON object doesn't have the primary key field 'id'
[英]JSON object with id as primary key schema design
我想用一個ID作為JSON object中的主鍵。這樣列表中的所有用戶都是唯一的。
像這樣:
{
"user": [{
"id": 1,
"name": "bob"
}]
}
在應用程序中,我必須在列表“用戶”的所有元素中搜索 id。
但我也可以使用 ID 作為索引來更輕松地訪問特定用戶。 像這樣:
{
"user": {
"1": {
"name": "bob"
}
}
}
在應用程序中,我現在可以簡單地編寫user["3"]
來獲取正確的用戶。
我應該使用什么? 第二種選擇有什么缺點嗎? 我確信有一個最佳實踐。
這取決於您希望對象采用何種格式、您希望對對象進行多少處理以及您擁有多少數據。
在處理 web 數據時,你會經常看到第一種格式。 如果有很多數據,那么您將需要遍歷所有記錄以找到匹配的 id,因為您的數據是一個數組。 通常該查詢會在您的較低級別數據集上強制執行,因此它可能已經被索引(例如,如果它是一個數據庫),所以這可能不是問題。 這種格式干凈且易於綁定。
當您需要查找效率時,您的第二個選項最有效,因為您有一個包含鍵值對的字典,可以在大型數據集中顯着加快查找速度。 並非所有庫都支持放置數字鍵(即使您將其強制為字符串)。 不過,您可以在您的 Id 前面加上一個 alpha 值,然后您可以在進行查找時添加前綴。 我在此示例中使用了 k,但您可以選擇對您的數據有意義的前綴。 在數據庫中將對象存儲為 json 二進制數據類型時,我使用這種格式。
{
"user": {
"k1": {
"name": "bob"
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.