我正在尝试将json对象发送到api端点。但我得到以下信息:
I / flutter(28184): 200
I / flutter(28184): {"error": "the JSON object must be str, not 'bytes'"}
我尝试了以下方法:
Future<http.Response> sendPost() async{
var post = {
"profile_id" : "${_profile_id}",
"profile_name" : "${_profile_Name}",
"profile_country" : "${_profile_country}",
"post_id" : "${current_post_id}",
"post_image_id" : "${current_post_image}",
"post_desc" : "La La La La La La",
"post_likes" : "${post_likes}",
"post_timestamp" : "05-06-2019 22:34",
"post_comments" : [],
"post_comments_profile_name" : [],
"post_comments_profile_image_id" : [],
"post_comments_timestamp" : []
};
var body = utf8.encode(json.encode(post));
var addPost = await http.post(
url,
headers: {"content-type" : "application/json"},
body: body
);
print("${addPost.statusCode}");
print("${addPost.body}");
return addPost;
}
另外,当您回答时,请记住此Map内应该有空数组。
谢谢!
答案 0 :(得分:0)
无需转换地图:
var body = utf8.encode(json.encode(post)); // delete this
只需将地图发送到人体,就像这样:
var addPost = await http.post(
url,
body: post
);
答案 1 :(得分:0)
为了将JSON发送到正文中,您应该对JSON进行字符串化。
var body = JSON.stringify(post);
我认为不需要编码。
答案 2 :(得分:0)
请勿使用utf8.encode()转换地图。 由于JSON对象必须是字符串而不是字节。 直接发送地图:
var addPost = await http.post(
url,
body: post
);
我从评论中了解到,您将来想检索字符串数组。 不用担心,可以轻松实现: