我正在努力从 Akka-Http 创建其余接口(interface),并使用 Slick 将 POST 信息存储在 MySql 表中。
CREATE TABLE source (
id INT NOT NULL AUTO_INCREMENT,
type VARCHAR(100),
source_json BLOB,
create_date VARCHAR(10),
modify_date VARCHAR(10),
created_by VARCHAR(100),
modified_by VARCHAR(100),
PRIMARY KEY (id)
);
Json
{
"id":"101",
"type":"prototype1",
"description":"pull",
"source_json":[
{
"v1":"neo",
"v2":"leo"
}
],
"create_date":"12/12/12",
"modify_date":"",
"created_by":"User",
"modified_by":"user"
}
Akka-HTTP 路线
val route = (path("CreateSource") & post){
entity(as [SourceEntity]){sourceEntity :SourceEntity =>
complete(createDataSource(sourceEntity).map(_.asJson))
}
案例类别
case class SourceEntity(id: Option[Long] = None, `type`: String, description: String,source_json: String,create_date:String,modify_date:String,created_by:String,modified_by:String){
require(!dataSourceName.isEmpty, "dataSourceName.empty") }
我需要将 source_json 值存储到我要获取的表中
The request content was malformed:
当我进行 POST 调用时
这是由于 Akka Http Unmarshalling 造成的吗?
最佳答案
您的 SourceEntity
案例类指定 source_json : String
但实际的 json 将其定义为字符串数组:
"source_json":[
{
"v1":"neo", "v2":"leo"
} ]
您只需更改案例类定义即可:
case class SourceEntity(id: Option[Long] = None,
`type`: String,
description: String,
source_json: Array[String],
...)
关于mysql - 使用akka http在Mysql表中存储JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43887917/