如何在请求正文中发送原始 json

How to send raw json in request body

Flutter 中使用 retrofit 包 我需要发送 json 原始对象,如邮递员快照所示。

我试过用这个方法做但是没成功

@override
@POST('/profile')
Future<UserModel> updateUser(@Body() UserModel userModel);

这是请求

╔╣ Request ║ POST ║ http://206.189.57.118/api/user/profile 

╔ Headers ╟ content-type: application/json ╟ Accept: application/json ╟ Authorization: Bearer 8|LMoB1zivD3O89B7Bv3RQi4zLMeAfTZShmClvWYAt ╟ contentType: application/json ╟ responseType: ResponseType.json ╟ followRedirects: true ╟ connectTimeout: 0 ╟ receiveTimeout: 0 

 ╔ Body ╟ gender: Male ╟ dateOfBirth: 856800000 ╟ maritalStatus: ╟ numChildren: 0 ╟ address: Khanyounis ╟ phone: 123456789 ╟ secondaryPhone: 123456789 ╟ secondaryPhoneRelationShip: ╟ telephone: 123456789 ╟ university: Azhar ╟ faculty: Software Engineering ╟ specialization: Web development ╟ image: null 

我认为这导致您在 UserModel 参数上使用驼峰式大小写(例如 dateOfBirthmaritalStatus)并且您的后端服务尝试使用下划线类型解析密钥(例如.date_of_birth, marital_status).

要继续在您的 dart 文件中使用驼峰式大小写并在 json/back 终端服务中使用下划线,您可以使用 json_serializable 并使用下划线添加 JsonKey。 例如

import 'package:json_annotation/json_annotation.dart';
part 'user_model.g.dart';

@JsonSerializable()
class UserModel {
  @JsonKey(name: 'first_name_ar')
  String firstNameAr;
  @JsonKey(name: 'middle_name_ar')
  String middleNameAr;
  @JsonKey(name: 'last_name_ar')
  String lastNameAr;
  @JsonKey(name: 'first_name_en')
  String firstNameEn;
  @JsonKey(name: 'middle_name_en')
  String middleNameEn;
  @JsonKey(name: 'last_name_en')
  String lastNameEn;
  @JsonKey(name: 'gender')
  String gender;
  @JsonKey(name: 'date_of_birth')
  String dateOfBirth;
  @JsonKey(name: 'marital_status')
  String maritalStatus;
  

  UserModel();
  factory UserModel.fromJson(Map<String, dynamic> json) =>
      _$UserModelFromJson(json);
  Map<dynamic, dynamic> toJson() => _$UserModelToJson(this);
}

我在我的项目中使用它来发送原始 json 数据,使用改造和工作。