【问题标题】:Manipulating JSON data during Deserialization into class model在反序列化到类模型期间操作 JSON 数据
【发布时间】:2019-09-24 13:30:36
【问题描述】:

反序列化时是否可以同时添加两个JSON字段?

例如:

public class root{
    public List<cars> carList{get;set;}
}

public class cars{
    public int HondaValue{get;set;}
    public int fordValue{get;set;}
    public int totalValue{get;set;}
}

JSON:

{
  "carList":
    {
     "hondaValue":30,000,
     "fordValue":40,000,
    },
    {
     "hondaValue":55,000,
     "fordValue":62,000,
    },
    {
     "hondaValue":77,000,
     "fordValue":65,000,
    },
}

那么在反序列化过程中,我可以得到我的类模型中总价值的 hondaValue 和 fordValue 的总和吗?还是我必须在反序列化后将它们设置为我的模型值并将它们添加/设置为总计?

【问题讨论】:

  • 这是有效的 int 30,000
  • 对不起,当您说“将这些值相加”时,您是指将总和存储在 totalValue 中吗?如果是这样,那么是的,您可能需要在序列化之前遍历列表。
  • 此字符串不是有效的 JSON。它包含多个错误。值中的逗号,第二个字典条目没有键。 carList 实际上是字典/对象,而不是列表
  • 对象属性和 Json 名称之间存在一些不匹配,您可以使用 [JsonProperty(PropertyName = "FooBar")] 进行更一致的命名。
  • 该问题与Json或反序列化无关。

标签: c# json


【解决方案1】:

你不需要做一个 foreach 只是这样做:

public struct Cars
{    
   public int HondaValue { get; set; }    
   public int FordValue { get; set; }
   public int TotalValue 
   { 
      get 
      {
         return HondaValue + FordValue;
      }
   }
}

【讨论】:

  • 谢谢,但如果我想将它们减、除和乘以 100 怎么办?我会在 get{...} 中编写所有代码吗?或者我可以调用一个方法吗?
  • 你可以在get中写一个方法或者代码,归根结底是一样的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
相关资源
最近更新 更多