Flutter Post 请求嵌套 JSON 作为数据 + BLoC 模式

Flutter Post Request with Nested JSON as Data + BLoC pattern

我尝试使用 BLoC 模式在 Post 请求中传递 JSON。

jsonEncode(<String, String>{
  'MobileNo': _emailController.value,
  'Password': _passwordController.value,
  'IPAddress': '192.168.0.1',
  'Latitude' : '23.04503',
  'Longitude': '72.55919',
  "wauid" : 'd4KY17YySLC8-ROzs1RoJN:APA91bHMVz-4tw7cRIrEmBU2wHr_YW1RgV5HQfcfQp1YQwkamDPUimiPrfisezPuOgghJgHepXixsRh1Rl_eu75E9qss4RzxM6bGIgQdSo-S9TvynJsfdztz67LiaWbC9fs4xlCZnFQc'
});

我找到了使用 jsonEncode 传递 JSON 的所有解决方案,但我没有找到任何传递 [=29] 中嵌套 JSON 的解决方案=] Flutter 请求.

这是我要传递的JSON:

{
    "userMaster": {
        "MobileNo": "8800112233",
        "Password": "564452",
        "Latitude": 23.04503,
        "Longitude": 72.55919,
        "IPAddress": "5f7f51e7-09f5-4cf2-87f3-ca5760f1ed57",
        "wauid": "12312"
    },
    "loginInfo" : {
        "UserID":0
    }
}

谁能告诉我如何将嵌套的JSON发送到post的Flutter请求?

请尝试以下

Map<String, dynamic> payload = {
 "userMaster": {
        "MobileNo": "8800112233",
        "Password": "564452",
        "Latitude": 23.04503,
        "Longitude": 72.55919,
        "IPAddress": "5f7f51e7-09f5-4cf2-87f3-ca5760f1ed57",
        "wauid": "12312"
    },
    "loginInfo" : {
        "UserID":0
    }
}    


Response response = await http.post(<URL>,body: json.encode(payload));

将 JSON 转换为模型然后使用它始终是一个好习惯。

class UserDetails {
  UserMaster userMaster;
  LoginInfo loginInfo;

  UserDetails({this.userMaster, this.loginInfo});

  UserDetails.fromJson(Map<String, dynamic> json) {
    userMaster = json['userMaster'] != null
        ? new UserMaster.fromJson(json['userMaster'])
        : null;
    loginInfo = json['loginInfo'] != null
        ? new LoginInfo.fromJson(json['loginInfo'])
        : null;
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.userMaster != null) {
      data['userMaster'] = this.userMaster.toJson();
    }
    if (this.loginInfo != null) {
      data['loginInfo'] = this.loginInfo.toJson();
    }
    return data;
  }
}

class UserMaster {
  String mobileNo;
  String password;
  double latitude;
  double longitude;
  String iPAddress;
  String wauid;

  UserMaster(
      {this.mobileNo,
      this.password,
      this.latitude,
      this.longitude,
      this.iPAddress,
      this.wauid});

  UserMaster.fromJson(Map<String, dynamic> json) {
    mobileNo = json['MobileNo'];
    password = json['Password'];
    latitude = json['Latitude'];
    longitude = json['Longitude'];
    iPAddress = json['IPAddress'];
    wauid = json['wauid'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['MobileNo'] = this.mobileNo;
    data['Password'] = this.password;
    data['Latitude'] = this.latitude;
    data['Longitude'] = this.longitude;
    data['IPAddress'] = this.iPAddress;
    data['wauid'] = this.wauid;
    return data;
  }
}

class LoginInfo {
  int userID;

  LoginInfo({this.userID});

  LoginInfo.fromJson(Map<String, dynamic> json) {
    userID = json['UserID'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['UserID'] = this.userID;
    return data;
  }
}

我已将 JSON 转换为模型,现在您可以在任何需要的地方使用它。