【发布时间】:2021-09-19 13:06:31
【问题描述】:
我正在尝试创建一些简单的 REST API,它将接收一些无类型的 json 数据以进行进一步处理,但我真的不知道结构。我到目前为止是这样的:
#[openapi]
#[post("/api/json-data", format = "json", data = "<data>")]
fn send_data(data: Json<String>) -> Json<ApiResponse> {
Json(DataProcessor::process(data.into_inner()))
}
稍后我将使用 serde 来获取无类型的 JSON 值
pub fn process(data: String) {
let json: Value = serde_json::from_str(data.as_str()).unwrap();
}
问题是,当我使用一些 JSON 数据调用此端点时,我收到以下错误:
Couldn't parse JSON body: Error("invalid type: map, expected a string"
只做fn send_data(data: String) 也行不通,然后#[openapi] 抱怨
the trait `OpenApiFromData<'_>` is not implemented for `std::string::String`
使用Rocket 和okapi 处理无类型JSON 数据的正确方法是什么?
非常感谢任何帮助。
【问题讨论】:
标签: json rust serde rust-rocket