hoo*_*ozr 4 c# json json.net deserialization json-deserialization
我的 JsonConvert 反序列化器有问题。我有课
[BsonCollection("matches")]
public class MatchData : Document
{
[JsonPropertyName("id")]
public string ExternalMatchId { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我尝试以这种方式反序列化:
[HttpPost("end")]
public ActionResult RoundEnd([FromBody] dynamic data)
{
var saveData = JsonConvert.DeserializeObject<MatchData>(data.ToString());
...
}
Run Code Online (Sandbox Code Playgroud)
输入 JSON 看起来像
"{"id": "61696f268c7b70b5f3e85803",
"game_server_id": "615ed4a1cd95e8209a4ab67d",
...
Run Code Online (Sandbox Code Playgroud)
但在我的输出MatchData
对象中ExternalMatchId
为空。如何解决这个问题?
您在这里混合框架。该JsonPropertyName
属性适用于System.Text.Json
您使用 JSON.Net 进行反序列化时的命名空间。所以解决方案是坚持其中之一。使用内置框架进行反序列化:
System.Text.Json.JsonSerializer.Deserialize<MatchData>(data.ToString());
Run Code Online (Sandbox Code Playgroud)
或者切换属性以使用 JSON.Net 版本:
[JsonProperty("Foo")]
Run Code Online (Sandbox Code Playgroud)
说了这么多,看起来您可以通过让 MVC 为您完成工作来简化整个事情。不要使用dynamic
模型(不要这样做 - 动态是有问题的,每次使用它时都会有一只小猫死掉),而是直接将模型放在这里:
public ActionResult RoundEnd([FromBody] MatchData data)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1691 次 |
最近记录: |