问题描述
enum class Foo(val type: String) {
DEFAULT("default"),OTHER("other")
}
@field:QueryValue("foo",defaultValue = "DEFAULT")
@field:Nullable
var foo: Foo = Foo.DEFAULT
这将正确序列化作为 foo: default
或 foo: 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: DEFAULT
或 foo: 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.')));