微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用 post 请求反序列化枚举值

如何解决无法使用 post 请求反序列化枚举值

假设我有一个枚举类:

    enum class Foo(val type: String) {
        DEFAULT("default"),OTHER("other")
    }

还有一个获取请求:

    @field:QueryValue("foo",defaultValue = "DEFAULT")
    @field:Nullable
    var foo: Foo = Foo.DEFAULT

这将正确序列化作为 foo: defaultfoo: other 传入的参数

但是,对于发布请求:

    @Body
    @field:Nullable
    var foo: Foo = Foo.DEFAULT

如果我发布了 { "foo": "default" }{ "foo": "other" } 的 json 正文

我会得到一个错误

Failed to convert argument [p0] for value [null] due to: Cannot deserialize value of type `Foo` from String \"default\": not one of the values accepted for Enum class: [DEFAULT,OTHER]\n at [Source: UNKNowN; line: -1,column: -1] ...

这里的任何帮助将不胜感激!我不确定这是故意的还是会被视为错误。附带说明一下,是否有可以将字段大写的注释? (因为 foo: DEFAULTfoo: OTHER 是有效的)

解决方法

此处的这篇文章详细介绍了如何解决此问题: https://github.com/micronaut-projects/micronaut-core/issues/1830

引用:

import 'package:dcli/dcli.dart';
import 'package:test/test.dart';

    expect(
        () => copy(from,to),throwsA(predicate((e) =>
            e is CopyException &&
            e.message == 'The from file ${truepath(from)} does not exists.')));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。