mysql - 使用akka http在Mysql表中存储JSON

标签 mysql json akka-http

我正在努力从 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/

相关文章:

php - 从最后插入的行获取最后插入的 id

java - Spring Data JPA - 编码 UTF-8 不起作用

javascript - JSON 对象,未定义?

python - json() 方法和 json.loads() 有什么区别

scala - 在 Akka-http 中主 Controller 之外完成请求

使用 C cmd mysqldump

mysql - 选择右侧 mysql 的下一列?

ruby - 将 ruby​​ 哈希值转换为有效且人类可读的 JSON

scala - 多个 http 请求的 Akka 流程

json - 在 Akka HTTP 中解码 gzipped JSON