代码之家  ›  专栏  ›  技术社区  ›  stefan.stt

由于系统命名,从JSON主体到模型问题的映射

  •  0
  • stefan.stt  · 技术社区  · 7 年前

    在请求主体i中有一个名为 systemDate . 此属性始终设置为 0 在我的模型中,我认为这是因为变量类型( long , double 等等),但在我把名字从 系统日期 someDate 在请求主体中,从 SystemDate SomeDate 在模型类中,该值按预期的方式从请求主体传递到模型实例。

    为什么会发生这种情况,有没有一种方法可以保持请求JSON的命名并使其将其值传递给模型?

    {  
        "category":"some_category",
        "level":5,
        "source":"some_source",
        "location":"some_location",
        "date":2793455394017,
        "message":"some_message",
        "id":3295830,
        "systemDate":1533114073596991534
    }
    

    下面是我的模型类的样子:

    public class MyModel
    {
        public MyModel()
        {
        }
    
        public string Category { get; set; }
    
        public int Level { get; set; }
    
        public string Source { get; set; }
    
        public string Location { get; set; }
    
        public double Date { get; set; }
    
        public string Message { get; set; }
    
        public long Id { get; set; }
    
        public double SystemDate { get; set; }
    }
    

    控制器方法:

        [HttpPost(EndpointUrlConstants.MY_ENDPOINT)]
        public async Task<IActionResult> DoSomething([FromBody] MyModel myModel)
        {
            // Some Code
    
            return this.Ok();
        }
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Edward    7 年前

    Asp.Net Core Json Serialize Settings AddJsonOptions Startup

    NamingStrategy = new SnakeCaseNamingStrategy()

        2
  •  1
  •   Rui Jarimba    7 年前

    public class MyModel
    {
        public MyModel()
        {
        }
    
        [JsonProperty("category")]
        public string Category { get; set; }
    
        [JsonProperty("level")]
        public int Level { get; set; }
    
        [JsonProperty("source")]
        public string Source { get; set; }
    
        [JsonProperty("location")]
        public string Location { get; set; }
    
        [JsonProperty("date")]
        public double Date { get; set; }
    
        [JsonProperty("message")]
        public string Message { get; set; }
    
        [JsonProperty("id")]
        public long Id { get; set; }
    
        [JsonProperty("systemDate")]
        public double SomeDate { get; set; }
    }
    

    string json = @"{  
        ""category"":""some_category"",
        ""level"":5,
        ""source"":""some_source"",
        ""location"":""some_location"",
        ""date"":2793455394017,
        ""message"":""some_message"",
        ""id"":3295830,
        ""systemDate"":1533114073596991534
    }";
    
    MyModel model = JsonConvert.DeserializeObject<MyModel>(json);
    

    SomeDate systemDate