我正在使用 Flutter 開發我的第一個移動應用程式,但我有一個疑問。
假設應用收到這樣的 JSON:
{
"_id": "123",
"name": "X",
}
要接收并發送它,將創建以下模型:
class User {
String id;
String name;
User({
this.id,
this.name
});
factory User.fromJson(Map<String, dynamic> json) => User(
id: json["_id"],
name: json["name"]
);
Map<String, dynamic> toJson() => {
"_id": id,
"name": name
};
}
現在由于某種原因,我需要將該資料的模型結構更改為,例如:
{
"id": "123",
"info": {
"name":"X",
"age":"20"
}
}
資料庫中存盤有舊結構的物件,當應用程式接收到它們時,會出現錯誤,因為新模型與舊資料不匹配。
如果應用程式已經投入生產,在不影響用戶的情況下避免此錯誤的最常見方法是什么?
uj5u.com熱心網友回復:
有無數的版本控制想法和框架,但基礎是:
- 將資料更新為新模型
- 創建第二個端點,將新資料模型傳送到您的應用程式
- 保留舊的端點,從新的資料結構中讀取,所以舊的應用程式仍然可以作業!
- 創建一個應用程式更新,您可以在其中與新端點對話并使用新的資料結構
- 當您確定有足夠多的用戶進行了更新時洗掉舊的端點(可能是“從不”)
或者:
- 更改后端
- 換個前端
- 同時部署,強制用戶更新
第一個更用戶友好且更易于處理,因為您可以異步作業和部署。例如,您可以先部署新后端,同時等待應用商店批準新應用。
uj5u.com熱心網友回復:
在我看來,您可以檢查用戶是否使用舊結構保存,如果是,則可以讀取并替換為新結構,否則正常讀取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/477182.html
上一篇:JSON反序列化問題:將JSON值反序列化為型別時出錯
下一篇:決議嵌套的JSON物件