lutter dio 传参map 包裹对象集合 ,服务器@RequestBody接收
时间: 2023-08-05 09:23:17 浏览: 142
如果你想使用Flutter Dio库将参数以Map包裹对象集合的形式传递给服务器的@RequestBody,可以这样做:
```dart
import 'package:dio/dio.dart';
void main() async {
Dio dio = Dio();
// 定义请求参数
Map<String, dynamic> data = {
'users': [
User(name: '张三', age: 20),
User(name: '李四', age: 21),
]
};
// 发送POST请求
Response response = await dio.post(
'http://your_api_url',
data: data,
);
print(response.data);
}
class User {
String name;
int age;
User({this.name, this.age});
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['age'] = this.age;
return data;
}
}
```
在上面的代码中,我们定义了一个User类来表示用户信息。然后,我们定义了一个Map对象,其中key为'users',value为一个对象集合,其中包含两个User对象。接着,我们使用Dio库发送了一个POST请求,请求体的内容是一个Map对象。Dio库会自动将这个Map对象转换成JSON格式,并以字符串的形式发送给服务器的@RequestBody。
在服务器端,你可以使用Spring MVC的@RequestBody注解,将请求体的JSON字符串转换成Java对象:
```java
@PostMapping("/api/user")
public List<User> addUser(@RequestBody Map<String, List<User>> data) {
List<User> userList = data.get("users");
// 处理用户信息
return userList;
}
```
在上面的代码中,我们使用Spring MVC的@PostMapping注解定义了一个添加用户的接口。该接口使用@RequestBody注解将请求体的JSON字符串转换成Java对象。你可以在这个方法中,对用户信息进行处理,并返回处理后的结果。注意,我们使用了Map<String, List<User>>来接收请求体,其中key为'users',value为一个对象集合,可以通过Map的get方法获取到。
阅读全文