所以,我正在使用Web API控制器来接受JSON请求.它映射到包含枚举列表的模型对象.我遇到的问题是,如果JSON包含无效值,它似乎没有正确反序列化.我希望无效值可以映射到我的枚举列表中的0值类型,但是没有发生.
我已经分离出3个主要案例:如果JSON的形式是
...
"MyEnumList":["IncorrectEnum", "One", "Two"]
...
Run Code Online (Sandbox Code Playgroud)
该值根本没有映射,我只是得到一个包含两个有效值的列表.但是,如果我提供这个JSON:
...
"MyEnumList":["123", "One", "Two"]
...
Run Code Online (Sandbox Code Playgroud)
我得到一个包含3个对象的列表,其中第一个对象的类型为"MyEnum",其值为123,即使在我的枚举中没有定义.如果我提供此JSON语法,也会发生同样的情况:
...
"MyEnumList":[123, "One", "Two"]
...
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释这里发生了什么,以及如何确保值始终映射到有效类型?
供参考,模型对象,包含我的枚举列表:
public class MyClass
{
public List<myEnum> MyEnumList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和简单的枚举:
public enum myEnum
{
Zero = 0,
One = 1,
Two = 2
}
Run Code Online (Sandbox Code Playgroud) 所以我有一个对象,其ID字段由Guid填充。我正在使用“必须”子句进行Elasticsearch查询,以匹配该字段中的特定ID。问题是elasticsearch返回的结果与我提供的Guid完全不匹配。我注意到我正在提供的Guid,Elasticsearch返回的结果之一在Guid的特定部分共享相同的数字。
这是我的查询源(我正在使用Elasticsearch控制台):
{
query:
{
bool:
{
must: [
{
text:
{
couchbaseDocument.doc.Id: 5cd1cde9-1adc-4886-a463-7c8fa7966f26
}
}]
must_not: [ ]
should: [ ]
}
}
from: 0
size: 10
sort: [ ]
facets: { }
}
Run Code Online (Sandbox Code Playgroud)
它返回两个结果。编号为
5cd1cde9-1adc-4886-a463-7c8fa7966f26
Run Code Online (Sandbox Code Playgroud)
另一个ID为
34de3d35-5a27-4886-95e8-a2d6dcf253c2
Run Code Online (Sandbox Code Playgroud)
如您所见,它们都有相同的中间术语“ -4886-”。但是,我希望该查询仅在记录完全匹配而不是部分匹配时才返回记录。我在这里做错了什么?