簡體   English   中英

如何在Flutter(Dart)中更新本地JSON文件中的數據

[英]How to update data in local JSON file in Flutter (Dart)

我在我的 flutter 應用程序中使用本地 JSON 文件。 單擊按鈕,我想更改同一個 JSON 文件中的一項。 JSON 文件 (UserData.json) 是:

        {
            "name": "name1",
            "companyName": "companyName1",
            "designation": "designation1",
            "isAdmin": "FALSE"
        },
        {
            "name": "name2",
            "companyName": "companyName2",
            "designation": "designation2",
            "isAdmin": "FALSE"
        },
        {
            "name": "name3",
            "companyName": "companyName3",
            "designation": "designation3",
            "isAdmin": "FALSE"
        },
        {
            "name": "name4",
            "companyName": "companyName4",
            "designation": "designation4",
            "isAdmin": "FALSE"
        }
  ]

model (user_model.dart) 是:

  final String name;
  final String companyName;
  final String designation;
  final String isAdmin;

  User({
    this.name,
    this.companyName,
    this.designation,
    this.isAdmin,
  });

  factory User.fromJson(Map<String, dynamic> json) {
    return User(
      name: json['name'] as String,
      companyName: json['companyName'] as String,
      designation: json['designation'] as String,
      isAdmin: json['isAdmin'] as String,
    );
  }

  Map<String, dynamic> toJson() {
    return <String, dynamic>{
      'name': name,
      'companyName': companyName,
      'designation': designation,
      'isAdmin': isAdmin,
    };
  }
}

出於測試目的,我想更新 JSON 文件中第一個用戶的“companyName”。 按下按鈕時調用的方法(尚未完成)是:

updateJson() async {
    var rawJSON = await json.decode(await DefaultAssetBundle.of(context)
        .loadString('user_data/UserData.json'));

    rawJSON[0]['companyName'] = "NewCompany";
    var var1 = json.encode(rawJSON);
  }

請幫助我更新 JSON 文件的代碼

我不認為你能做到這一點,因為當你使用 Dart 讀取 JSON Object 時,你正在加載一個字符串而不是 JSON object。最終它會很復雜,即使你添加方法到JSON object、Dart 仍會將所有內容讀取為字符串。 然后在對字符串使用jsonDecode方法時將它們轉換為 Dart 對象。

您不能直接更新.json文件。 請改用以下步驟:

  1. 創建一個 dart 文件,例如globals.dart
  2. 在那里創建你的 userJson 文件:
String userJson = json.encode(your json file);
  1. 在您的代碼中導入全局變量:
import "./globals.dart" as globals;

List<User> users = json.decode(globals.userJson);

4.然后您可以更新 json 參數如下:

updateJson() async {
    users[0]['companyName'] = "NewCompany";
    globals.userJson = json.encode(users);


  }
  1. 對於額外的步驟,您可以將此字符串(json.encoded 文件)保存在數據庫中或將其發送到服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM