小编Jay*_*ard的帖子

将ByteArrayOutputStream转换为Kotlin中的json

我正在尝试为2个服务创建一个资源,1个在application/x-www-form-urlencoded和string payload中,另一个应用程序/ json格式用json body.

我有这个代码:

@POST @Path("/test")
fun test(@Context request: ContainerRequest): Response {
    val baos = ByteArrayOutputStream()
    request.entityStream.use { it.copyTo(baos) }
    val ipnRawData = baos.toString()
    var map : Map<String,Any>
    map = when (request.headers.getFirst("Content-Type")) {
        "application/json" -> objectMapper.convertValue(ipnRawData,Map::class.java) as Map<String,Any>
        "application/x-www-form-urlencoded" -> LinkedHashMap()
        else -> throw UnsupportedOperationException()
    }
    //....handle the map
    return Response.status(200).build()
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用json选项和body :)运行它时{"name" :"test"},我收到一个错误:

"java.lang.IllegalArgumentException:无法构造java.util.LinkedHashMap的实例:no String-argument构造函数/工厂方法从String值反序列化('{"name":"test"}')"

谢谢你的帮助,Yoel

json jackson kotlin

0
推荐指数
1
解决办法
981
查看次数

在 Kotlin 中获取数字的因数

刚接触 Kotlin,如何找到数字的因数?

例如 24 应该给出 1, 2, 3, 4, 6, 8, 12, 24?

我知道如何使用列表理解来执行此 python,但不确定如何在 Kotlin 中正确执行此操作。

python kotlin

0
推荐指数
1
解决办法
2084
查看次数

将Java Option调用迁移到kotlin

我正在用kotlin迈出第一步.

我正在将一些现有的Java代码迁移到kotlin.

我有以下几点:

storyDate.ifPresent(article::setPublishDate);
Run Code Online (Sandbox Code Playgroud)

其中storyDate是一个Optional并且文章有一个方法setPublishDate(Date)方法.

我如何将此行迁移到kotlin?

https://try.kotlinlang.org上的自动迁移器是

storyDate.ifPresent(Consumer<Date>({ article.setPublishDate() }))
Run Code Online (Sandbox Code Playgroud)

但是这行不能用kotlin编译器编译.

kotlin kotlin-interop

0
推荐指数
3
解决办法
571
查看次数

kotlin:无法使用 Jackson 将字符串解析为枚举

我使用 lib jackson-module-kotlin 将 json 字符串解析为对象。

我的问题是,当我将字符串解析为 enum 时,当我使用 intellij 启动时,我有以下堆栈跟踪:

引起原因:kotlin.reflect.jvm.internal.KotlinReflectionInternalError:尚未完全支持内置 Kotlin 类型的反射。未找到公共最终 val 名称的元数据:kotlin.Enum[DeserializedPropertyDescriptor@212b316a] 中定义的 kotlin.String

我用maven启动的时候没有这个问题。

我使用 kotlin 1.1.51,使用 intellij kotlin 插件 1.2.0-release-IJ2017.3-1,我的目标是 JVM 1.8,我使用 jackson-module-kotlin 版本 2.8.7

我应该怎么办?

 enum class CType { DEAL, FILE }
 data class Code(val code: String, val type: CType)

 fun testDeserialization() {
    val mapper = jacksonObjectMapper()
    // following line throws an exception:
    mapper.readValue("""{"code":"A","type":"DEAL"}""", Code::class.java)
 }
Run Code Online (Sandbox Code Playgroud)

jackson kotlin jackson-modules

0
推荐指数
1
解决办法
5046
查看次数

为什么Kotlin反编译器会生成null.INSTANCE

我试图通过检查它在Java方面的外观来了解Kotlin的一些功能.

所以作为一个实验,我尝试了这个:

val printKotlin = fun () {
    print("Hello Kotlin")
}
Run Code Online (Sandbox Code Playgroud)

所以上面代码片段的输出是:

public final class FunAsVariableKt {
    private static final Function0 printKotlin;

    public static final Function0 getPrintKotlin() {
        return printKotlin;
    }

    static {
        printKotlin = (Function0)null.INSTANCE;
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何理解上面反编译代码的静态块?为什么它会生成这个非工作代码?

kotlin jvm-bytecode

0
推荐指数
1
解决办法
196
查看次数

这个 kotlin 代码与 java 的等价物是什么

以下是一些打印任何语句或语句块的执行时间的kotlin代码:

fun exeTime(code: () -> Unit) {
    var start = System.currentTimeMillis()
    code()
    var end = System.currentTimeMillis() - start
    println("Execution time: " + end + "ms")
}
Run Code Online (Sandbox Code Playgroud)

它可以这样使用:

exeTime {
    // some code
    // ...
}
Run Code Online (Sandbox Code Playgroud)

Java 中exeTime函数的等效构造是什么?

java

-4
推荐指数
1
解决办法
5125
查看次数