gpt4 book ai didi

c# - JSON.NET 反序列化/序列化 JsonProperty JsonObject

转载 作者:太空狗 更新时间:2023-10-29 23:46:53 28 4
gpt4 key购买 nike

我有一个关于使用 Newtonsoft JSON.NET 库进行反序列化/序列化的问题:

我收到这个 json :

 {
"customerName" : "Lorem",
"id": 492426
"sequence": 1232132
"type" : 3,
"status" : 0,
"streetNumber" : 9675,
"streetName" : "Lorem",
"suite" : null,
"city" : "IPSUM",
"provinceCode" : "QC",
"postalCode" : "H1P1Z3",
"routeNumber" : 0,
"poBox" : 0,
"streetType" : "CH",
"userId" : 25,
"streetDirection" : null,
"countryCode" : "CA",
"customerNickName" : "Lorem ipsum",
"streetSuffix" : null,
"contacts" : [ {
"status" : 0,
"telephone" : 4445555555,
"extension" : 0,
"email" : "webtest@test.com",
"id" : 50,
"fullName" : "name",
"department" : "department"
} ],
"attribute" : {
"nbrOfUse" : 1,
"lastUse" : "2013-01-03T09:57:28-0500"
}
}

我的问题是这部分:

    "attribute" : {
"nbrOfUse" : 1,
"lastUse" : "2013-01-03T09:57:28-0500"
}

在我的 address 类中,是否可以做类似的事情:

    [JsonProperty(PropertyName = "lastUse", ObjectName="attribute")]
or [JsonProperty(PropertyName = "lastUse")][JsonObject(PropertyName = "attribute")]
or something like this ...
public DateTime? LastUse { get; set; }

我不会使用 JObject.Parse(...) 因为 json 非常大

我的类(class):

public class Address
{
/// <summary>
/// Gets or sets the id of the <see cref="Address" /> class.
/// </summary>
/// <value>
/// id from index as400 for validating address with canada post
/// Type Int64, The id.
/// </value>
[JsonProperty(PropertyName = "id")]
public int Id { get; set; }

/// <summary>
/// Gets or sets the number of the <see cref="Company" /> class.
/// </summary>
/// <value>
/// Type String, The number.
/// </value>
[JsonProperty(PropertyName = "streetNumber")]
[Display(Name = "CompanyNumber", ResourceType = typeof(AccountModels))]
//[MustBeEmptyIfAnotherIsNotEmpty("PoBox", ErrorMessageResourceType = typeof(GenericValidator), ErrorMessageResourceName = "MustBeEmptyIfAnotherIsNotEmpty")]
public string Number { get; set; }

/// <summary>
/// Gets or sets the type of the street.
/// </summary>
/// <value>
/// The type of the street.
/// </value>
[JsonProperty(PropertyName = "streetType")]
[Display(Name = "StreetType", ResourceType = typeof(AccountModels))]
//[MustBeEmptyIfAnotherIsNotEmpty("PoBox",false, ErrorMessageResourceType = typeof(GenericValidator), ErrorMessageResourceName = "MustBeEmptyIfAnotherIsNotEmpty")]
public string StreetType { get; set; }

/// <summary>
/// Gets or sets the street of the <see cref="Company" /> class.
/// </summary>
/// <value>
/// Type String, The street.
/// </value>
[JsonProperty(PropertyName = "streetName")]
[Display(Name = "CompanyStreet", ResourceType = typeof(AccountModels))]
[StringLength(50, ErrorMessageResourceType = typeof(GenericValidator), ErrorMessageResourceName = "Length", MinimumLength = 2)]
//[MustBeEmptyIfAnotherIsNotEmpty("PoBox", ErrorMessageResourceType = typeof(GenericValidator), ErrorMessageResourceName = "MustBeEmptyIfAnotherIsNotEmpty")]
public string Street { get; set; }

[Display(Name = "StreetDirection", ResourceType = typeof(AccountModels))]
[StringLength(2, ErrorMessageResourceType = typeof(GenericValidator), ErrorMessageResourceName = "Length", MinimumLength = 0)]
public string StreetDirection { get; set; }

[Display(Name = "StreetSuffix", ResourceType = typeof(AccountModels))]
[StringLength(1, ErrorMessageResourceType = typeof(GenericValidator), ErrorMessageResourceName = "Length", MinimumLength = 0)]
public string StreetSuffix { get; set; }

/// <summary>
/// Gets or sets the street suite of the <see cref="Company" /> class.
/// </summary>
/// <value>
/// Type String, The street suite.
/// </value>
[JsonProperty(PropertyName = "suite")]
[Display(Name = "CompanyStreetSuite", ResourceType = typeof(AccountModels))]
[StringLength(50, ErrorMessageResourceType = typeof(GenericValidator), ErrorMessageResourceName = "Length", MinimumLength = 0)]
//[MustBeEmptyIfAnotherIsNotEmpty("PoBox",false, ErrorMessageResourceType = typeof(GenericValidator), ErrorMessageResourceName = "MustBeEmptyIfAnotherIsNotEmpty")]
public string StreetSuite { get; set; }

/// <summary>
/// Gets or sets the city of the <see cref="Company" /> class.
/// </summary>
/// <value>
/// Type String, The city.
/// </value>
[Required]
[JsonProperty(PropertyName = "city")]
[Display(Name = "CompanyCity", ResourceType = typeof(AccountModels))]
public string City { get; set; }

/// <summary>
/// Gets or sets the province of the <see cref="Company" /> class.
/// </summary>
/// <value>
/// Type String, The province.
/// </value>
[Required]
[Display(Name = "CompanyProvince", ResourceType = typeof(AccountModels))]
[JsonProperty(PropertyName = "provinceCode")]
public string Province { get; set; }

/// <summary>
/// Gets or sets the postal code of the <see cref="Company" /> class.
/// </summary>
/// <value>
/// Type String, The postal code.
/// </value>
[JsonProperty(PropertyName = "postalCode")]
[Display(Name = "CompanyPostalCode", ResourceType = typeof(AccountModels))]
[PostalCode("Country", ErrorMessageResourceType = typeof(GenericValidator), ErrorMessageResourceName = "PostalCode")]
public string PostalCode { get; set; }

/// <summary>
/// Gets or sets the country of the <see cref="Company" /> class.
/// </summary>
/// <value>
/// Type String, The country.
/// </value>
[JsonProperty(PropertyName = "country")]
[Display(Name = "Country", ResourceType = typeof(AccountModels))]
public string Country { get; set; }

// ....//

/*record info*/
[Display(Name = "modifyDate", ResourceType = typeof(Resources.Models.Address))]
public DateTime ModifyDate { get; set; }

[Display(Name = "endDate", ResourceType = typeof(Resources.Models.Address))]
public DateTime? EndDate { get; set; } // when she deactivated

[Display(Name = "lastUse", ResourceType = typeof(Resources.Models.Address))]
public DateTime? LastUse { get; set; }

[Display(Name = "nbrOfUse", ResourceType = typeof(Resources.Models.Address))]
public int NbrOfUse { get; set; }
}

最佳答案

您需要为“属性”创建自定义类型,例如:

    public class Attribute {

[JsonProperty(PropertyName = "nbrOfUse")]
public int _nbrOfUse { get; set; }
[JsonProperty(PropertyName = "streetType")]
[Display(Name = "lastUse", ResourceType = typeof(AccountModels))]
public string _lastUse { get; set; }

}

并在您的地址类中创建一个属性类对象。

关于c# - JSON.NET 反序列化/序列化 JsonProperty JsonObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146937/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com