我创建了一个单独的类,它是我的模型类,并且有一个发布到 DISCORD WEB HOOK 的功能。我正在从 FORM UI 屏幕将地图值设置为 true。 textformfield 值被发布,而 MAP 给出如下错误,只是 textfield 值被发布并且工作正常,但 MAP 不起作用。我写的 JSON 不好吗?
P.S 这是一个不和谐的钩子,所以“内容”是必要的
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);
}
}
答案 0 :(得分:0)
去掉这一行,直接把Map传给post函数。
String jsonBody = json.encode(body);
答案 1 :(得分:0)
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);
}