小编Jos*_*xon的帖子

Web Api错误地反序列化枚举列表

所以,我正在使用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)

c# json.net asp.net-web-api

5
推荐指数
1
解决办法
3699
查看次数

Elasticsearch Bool搜索不正确匹配

所以我有一个对象,其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-”。但是,我希望该查询仅在记录完全匹配而不是部分匹配时才返回记录。我在这里做错了什么?

elasticsearch

2
推荐指数
1
解决办法
260
查看次数

标签 统计

asp.net-web-api ×1

c# ×1

elasticsearch ×1

json.net ×1