• <small id='CeUNM'></small><noframes id='CeUNM'>

    <i id='CeUNM'><tr id='CeUNM'><dt id='CeUNM'><q id='CeUNM'><span id='CeUNM'><b id='CeUNM'><form id='CeUNM'><ins id='CeUNM'></ins><ul id='CeUNM'></ul><sub id='CeUNM'></sub></form><legend id='CeUNM'></legend><bdo id='CeUNM'><pre id='CeUNM'><center id='CeUNM'></center></pre></bdo></b><th id='CeUNM'></th></span></q></dt></tr></i><div id='CeUNM'><tfoot id='CeUNM'></tfoot><dl id='CeUNM'><fieldset id='CeUNM'></fieldset></dl></div>
    <legend id='CeUNM'><style id='CeUNM'><dir id='CeUNM'><q id='CeUNM'></q></dir></style></legend>

      <tfoot id='CeUNM'></tfoot>
        <bdo id='CeUNM'></bdo><ul id='CeUNM'></ul>

        为什么当我使用 JSON.NET 反序列化时会忽略我的默认值?

        Why when I deserialize with JSON.NET ignores my default value?(为什么当我使用 JSON.NET 反序列化时会忽略我的默认值?)
          • <small id='eTbwh'></small><noframes id='eTbwh'>

              <tbody id='eTbwh'></tbody>
              <bdo id='eTbwh'></bdo><ul id='eTbwh'></ul>

              1. <i id='eTbwh'><tr id='eTbwh'><dt id='eTbwh'><q id='eTbwh'><span id='eTbwh'><b id='eTbwh'><form id='eTbwh'><ins id='eTbwh'></ins><ul id='eTbwh'></ul><sub id='eTbwh'></sub></form><legend id='eTbwh'></legend><bdo id='eTbwh'><pre id='eTbwh'><center id='eTbwh'></center></pre></bdo></b><th id='eTbwh'></th></span></q></dt></tr></i><div id='eTbwh'><tfoot id='eTbwh'></tfoot><dl id='eTbwh'><fieldset id='eTbwh'></fieldset></dl></div>

                <legend id='eTbwh'><style id='eTbwh'><dir id='eTbwh'><q id='eTbwh'></q></dir></style></legend>
                1. <tfoot id='eTbwh'></tfoot>
                  本文介绍了为什么当我使用 JSON.NET 反序列化时会忽略我的默认值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  我使用 JSON.NET 作为我的主要序列化程序.

                  I'm using JSON.NET as my main serializer.

                  这是我的模型,看我设置了一些 JSONProperties 和一个 DefaultValue.

                  This is my model, look that I've setted some JSONProperties and a DefaultValue.

                  public class AssignmentContentItem
                  {
                      [JsonProperty("Id")]
                      public string Id { get; set; }
                      [JsonProperty("Qty")]
                      [DefaultValue(1)]
                      public int Quantity { get; set; }
                  }
                  

                  当我序列化一个 List 时,它做得很好:

                  When I serialize a List<AssignmentContentItem>, it doing a good work:

                  private static JsonSerializerSettings s = new JsonSerializerSettings
                  {
                      DefaultValueHandling = DefaultValueHandling.Ignore,
                      NullValueHandling = NullValueHandling.Ignore
                  };
                  

                  输出:

                  [{"Id":"Q0"},{"Id":"Q4"},{"Id":"Q7"}]
                  

                  但是当我想反序列化这个 jsonContent 时,属性 Qty 总是 0 并且没有设置为默认值.我的意思是,当我反序列化 jsonContent 时,数量的 DefaultValue 应该是 1 而不是 0.

                  But when I'd like to deserialize this jsonContent, the property Qty is always 0 and is not set to the default value. I mean, when I deserialize that jsonContent, as DefaultValue for Quantity should be one instead of 0.

                  public static List<AssignmentContentItem> DeserializeAssignmentContent(string jsonContent)
                  {
                      return JsonConvert.DeserializeObject<List<AssignmentContentItem>>(jsonContent, s);
                  }
                  

                  我该怎么办

                  推荐答案

                  DefaultValue 属性没有设置属性的值.看到这个问题:.NET DefaultValue 属性

                  The DefaultValue attribute does not set the value of the property. See this question: .NET DefaultValue attribute

                  最好在构造函数中设置值:

                  What you might be better off doing is setting the value in the constructor:

                  public class AssignmentContentItem
                  {
                      [JsonProperty("Id")]
                      public string Id { get; set; }
                      [JsonProperty("Qty")]
                      public int Quantity { get; set; }
                  
                      public AssignmentContentItem()
                      {
                          this.Quantity = 1;
                      }
                  }
                  

                  这一行在哪里:

                  AssignmentContentItem item =
                      JsonConvert.DeserializeObject<AssignmentContentItem>("{"Id":"Q0"}");
                  

                  导致 AssignmentContentItemQuantity 设置为 1.

                  Results in an AssignmentContentItem with its Quantity set to 1.

                  这篇关于为什么当我使用 JSON.NET 反序列化时会忽略我的默认值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Force JsonConvert.SerializeXmlNode to serialize node value as an Integer or a Boolean(强制 JsonConvert.SerializeXmlNode 将节点值序列化为整数或布尔值)
                  Using JSON to Serialize/Deserialize TimeSpan(使用 JSON 序列化/反序列化 TimeSpan)
                  Could not determine JSON object type for type quot;Classquot;(无法确定类型“Class的 JSON 对象类型.)
                  How to deserialize a JSONP response (preferably with JsonTextReader and not a string)?(如何反序列化 JSONP 响应(最好使用 JsonTextReader 而不是字符串)?)
                  how to de-serialize JSON data in which Timestamp it-self contains fields?(如何反序列化时间戳本身包含字段的JSON数据?)
                  JSON.Net custom contract serialization and Collections(JSON.Net 自定义合约序列化和集合)

                  <i id='NCVgD'><tr id='NCVgD'><dt id='NCVgD'><q id='NCVgD'><span id='NCVgD'><b id='NCVgD'><form id='NCVgD'><ins id='NCVgD'></ins><ul id='NCVgD'></ul><sub id='NCVgD'></sub></form><legend id='NCVgD'></legend><bdo id='NCVgD'><pre id='NCVgD'><center id='NCVgD'></center></pre></bdo></b><th id='NCVgD'></th></span></q></dt></tr></i><div id='NCVgD'><tfoot id='NCVgD'></tfoot><dl id='NCVgD'><fieldset id='NCVgD'></fieldset></dl></div>

                    <tbody id='NCVgD'></tbody>

                    <bdo id='NCVgD'></bdo><ul id='NCVgD'></ul>
                    1. <tfoot id='NCVgD'></tfoot>
                        <legend id='NCVgD'><style id='NCVgD'><dir id='NCVgD'><q id='NCVgD'></q></dir></style></legend>

                            <small id='NCVgD'></small><noframes id='NCVgD'>