【问题标题】:JSON.Net - Deserialisation - underscore in property value turns into spaceJSON.Net - 反序列化 - 属性值中的下划线变成空格
【发布时间】:2018-01-05 06:48:14
【问题描述】:

我有一个这样的 POCO 对象 -

class User
{
     string FullName { get; set;}
     DateTime DOJ { get; set;}
     string UserName { get; set;}
}

我有一个 WebAPI 发送以下 JSON 来更新用户

PUT /user/{user-id}
{
    "FullName ": "My Name",
    "DOJ": "01-05-2018",
    "UserName": "My_user_Name"
}

// Deserialize in C# code
var user = JsonConvert.DeserializeObject<User>(Above-Json-String);

当我使用 JSON.net api 反序列化这个 json 时,“user.UserName”的值为“我的用户名”,下划线被转换为空格。

在属性值中保留下划线的任何解决方案?

【问题讨论】:

  • 我刚刚尝试从字符串常量反序列化,并保留了下划线。所以我不认为它是反序列化。可能是传输层中的某些东西将它们更改为空格吗?快速测试:反序列化前看看你的 JSON 字符串是否有下划线。
  • 请查看link
  • @sunrise:这是在属性 name 中,而不是 value
  • @Hans - 感谢您的回复。我试过你的测试,我可以在反序列化之前看到下划线。所以它通过传输层。顺便说一句,您使用的是什么版本的库?我正在使用“8.0.3.19514”,由于业务原因,我无法更改为更高版本。

标签: c# json.net


【解决方案1】:

Jsonproperty 可能会解决您所说的问题。

使用 JsonProperty 属性来指示 JSON 中的名称。

[JsonProperty(PropertyName = "binding type")]
string FullName { get; set;}

【讨论】:

    猜你喜欢
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多