无法在flutter中将MAP值发布到https帖子



我制作了一个单独的类,它是我的模型类,具有发布到DISCORD WEB HOOK的函数。我在FORM UI屏幕上将映射值设置为true。textformfield值被张贴,而MAP给出如下错误,只有textfield值被发布并正常工作,但MAP不工作。我写的JSON不好吗?

p。这是一个不和谐的钩子,所以";内容";是必要的

I/flutter (26346): {"content": ["Could not interpret "['testing options', {'Spot': True, 'Red': True, 'Thich': False, 'Dry': True, 'Strech': False}]" as string."]}

这是类的代码

import 'dart:convert';
import 'package:http/http.dart';
class DataPush {
static const String Spot = 'Spot';
static const String Red = 'Red';
static const String Thick = 'Thich';
static const String Dry = 'Dry';
static const String Strech = 'Strech';
String firstName = '';
Map<String, bool> passions = {
Spot: false,
Red: false,
Thick: false,
Dry: false,
Strech: false,
};
save() {
print("Saved");
}
makePostRequest() async {
final uri = Uri.parse(
'MY DISCORD WEBHOOK URL');
final header = {'Content-Type': 'application/json'};
Map<String, dynamic> body = {
"content": [firstName, passions]
};
String jsonBody = json.encode(body);
Response response = await post(
uri,
headers: header,
body: jsonBody,
);
int statusCode = response.statusCode;
String responseBody = response.body;
print(statusCode);
print(responseBody);
}
}

删除此行并直接将Map传递给post函数。

String jsonBody = json.encode(body);

Discord webhook文档将content字段指定为字符串,但您发送的数组是该字段的值-如果您真的想在content字段中发送数组,则需要首先将其编码为json字符串本身。

makePostRequest() async {
final uri = Uri.parse(
'MY DISCORD WEBHOOK URL');
final header = {'Content-Type': 'application/json'};
Map<String, dynamic> body = {
"content": json.encode([firstName, passions]) // Change this line
};
String jsonBody = json.encode(body);
Response response = await post(
uri,
headers: header,
body: jsonBody,
);
int statusCode = response.statusCode;
String responseBody = response.body;
print(statusCode);
print(responseBody);
}

最新更新