无法使用Kotlin将主体发布到Spark REST API

我试图按照这个Spark教程来使用Kotlin创建一个REST API ,而我正努力在JSON主体上发布数据

我想将这些数据发布到正文中,如下所示:

curl -H "Content-Type: application/json" -X POST -d '{"token" : "eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vdHJ1c3R5YXBwLmNvbS8iLCJzdWIiOiJ1c2Vycy8xMzAwODE5MzgwIiwiZXhwIjoxNDg5OTgwNTI2fQ.5ZJG9GyhG-OCXg0C510MBFs9EQHdE909s4hpNxnM6LU"}' http://localhost:4567/tokens 

但是,这将在我的Kotlin文件第20行中得到一个空值

 /** * REST API for getting tokens * Created by juanma on 15/3/17. */ import spark.Spark.get import spark.Spark.post import spark.Spark.* import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper fun main(args: Array<String>) { get("/hello") { req, res -> "Hello World" } path("/tokens") { get("") { req, res -> createToken() } // TODO check this instead, so I can get the params from the body // https://stackoverflow.com/a/30113863/3923525 post("") { req, res -> val token = req.queryParams("token") val verifiedToken = retrieveToken(token) res.type("application/json") jacksonObjectMapper().writeValueAsString(verifiedToken) } } } fun createToken(): String { val jwtProvider: JwtProvider = JwtProvider() val jwt: String = jwtProvider.createJwt() return jwt } fun retrieveToken(jwt: String): String { val jwtProvider: JwtProvider = JwtProvider() return jwtProvider.verifyJwt(jwt) } 

设置URL中的令牌似乎工作,但这不是我想要做的:

 curl -X POST 'http://localhost:4567/tokens' -d 'token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vdHJ1c3R5YXBwLmNvbS8iLCJzdWIiOiJ1c2Vycy8xMzAwODE5MzgwIiwiZXhwIjoxNDg5OTgwNTI2fQ.5ZJG9GyhG-OCXg0C510MBFs9EQHdE909s4hpNxnM6LU' 

我正在使用Gradle,这里是我的build.gradle ,以防万一:

 group 'com.github.juanmougan' version '1.0-SNAPSHOT' buildscript { ext.kotlin_version = '1.1.1' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.1" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'java' apply plugin: 'kotlin' repositories { mavenCentral() } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.1" compile group: 'com.sparkjava', name: 'spark-core', version: '2.5.5' compile 'io.jsonwebtoken:jjwt:0.7.0' compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-kotlin', version: '2.8.7' testCompile group: 'junit', name: 'junit', version: '4.11' compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } sourceSets { main.java.srcDirs += 'src/main/kotlin' } 

我遇到了这个答案 ,它使用Spark和Java,并手动分析身体。 所以我试图在一个全新的Spark / Maven / Java项目中使用它,但它甚至不能编译。 在这一行

 JSONObject json = JSONObject.fromObject(element); 

无法导入类JSONObject 。 所以我想这是一个松散的结局。

任何想法将不胜感激。
提前致谢

JSONObject驻留在org.json:json ,您可能需要添加该包。

如果你想使用杰克逊,看看例如http://www.journaldev.com/2324/jackson-json-java-parser-api-example-tutorial (实际上使用杰克逊,你至少需要com.fasterxml.jackson.core:jackson-core ,还有com.fasterxml.jackson.core:jackson-databind )。