【问题标题】:I want to serialize JSON from array to object我想将 JSON 从数组序列化为对象
【发布时间】:2020-07-16 10:41:45
【问题描述】:

这是我想要的 JSON 格式

{ "ReferId": "9800", 
"DestinationList":["250"], 
"EmailAddress": "Test_Emails@gmail.com", 
"ApplicantList":[ 
{
"FirstName":"Test", 
"LastName":"Test", 
"Dob":"01/01/1990", 
"Gender":"M", 
} ], 
"CreditCard": { 
"CardExpirationMonth": 1, 
"CardExpirationYear": 2021, 
"CardHolderAddress1": "123 Main", 
"Transaction": {"Amount":106.56} 
} 
} 

按照这个结构,我创建了模型。请找班级

public class Atlas_Purchase
    {
        public string ReferId { get; set; }
        public List<string> DestinationList { get; set; }
        public List<AtlasApplicantList> ApplicantList { get; set; }
        private List<AtlasCreditCardDetails> CreditCards = new List<AtlasCreditCardDetails>();
        public List<AtlasCreditCardDetails> CreditCard
        {
            get { return CreditCards; }
            set { CreditCards = value; }
        }

public class AtlasApplicantList
    {
      public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Dob { get; set; }
        public string Gender { get; set; }
}

public class AtlasCreditCardDetails
    {
        public string CardExpirationMonth { get; set; }
        public string CardExpirationYear { get; set; }
        public string CardHolderAddress1 { get; set; }
        private List<AtlasTransaction> Transactions = new List<AtlasTransaction>();
        public List<AtlasTransaction> Transaction
        {
            get { return Transactions; }
            set { Transactions = value; }
        }
    }

但是当我序列化数据并且我以这种格式获取 JSON 时 JSON 结构不正确

我尝试了不同的方法来序列化数据,但仍然没有成功,请帮助解决这个问题。 提前致谢。

比斯瓦鲁普

【问题讨论】:

  • 您已将“Credit”属性声明为 List,因此反序列化的对象将是一个列表。不是吗?如果您将只有一个 Credit 属性,则必须将其定义为 AtlasCreditCardDetails 而不是 List 并且对于“Transction”对象也是如此 ....
  • 获取示例 JSON,编辑您的问题并将示例 JSON 添加到您的问题中。完成后,您的问题将更容易重现
  • 请找到应用序列化后生成的json { "ReferId": "9800", "DestinationList":["250"], "EmailAddress": "Test_Emails@gmail.com", "ApplicantList":[ {"FirstName":"Test", "LastName":"Test", "Dob":"01/01/1990", "Gender":"M", } ], "CreditCard": [ { "CardExpirationMonth": 1, "CardExpirationYear": 2021, "CardHolderAddress1": "123 Main", "Transaction": [{"Amount":106.56}] }] }
  • @Zadeh 正如我所提到的,所需的 JSON 在 AtlasCreditCardDetails 下具有多个值,所以我这样做了。你认为我需要改变班级的结构吗?

标签: c# json asp.net-mvc asp.net-web-api serialization


【解决方案1】:
public class AtlasTransaction { public decimal Amount {get;set;} }

你有这门课吗? 也代替这段代码

private List<AtlasCreditCardDetails> CreditCards = new List<AtlasCreditCardDetails>();
public List<AtlasCreditCardDetails> CreditCard
{
get { return CreditCards; }
set { CreditCards = value; }
}

只写这么多public List&lt;AtlasCreditCardDetails&gt; CreditCard {get;set;}

在类AtlasCreditCardDetails 中更改属性Transaction 的方式相同

【讨论】:

  • 我已经应用了您的逻辑,但仍然没有运气以相同的格式获得响应..
  • AtlasTransaction 类你有吗?
  • 也可以使用[JsonObject("CreditCard")] 而不是AtlasCreditCardDetails。您还必须添加其他类,因为您的类名与 Json 对象不同。为AtlasApplicantList,AtlasTransaction 添加此属性
猜你喜欢
  • 2014-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多