JSON.NET désérialiser/sérialiser JsonProperty JsonObject

J'ai une question pour désérialiser/sérialiser avec le Newtonsoft JSON.NET bibliothèque:

Je reçois ce 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" : "[email protected]",
        "id" : 50,
        "fullName" : "name",
        "department" : "department"
    } ],
    "attribute" : {
      "nbrOfUse" : 1,
      "lastUse" : "2013-01-03T09:57:28-0500"
    }       
}

et mon problème est avec cette partie :

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

Dans mon address de la classe, est-il possible de faire quelque chose comme:

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

Je ne voudrais pas utiliser JObject.Parse(...) parce que le json est très grand

Ma classe :

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; }
}

OriginalL'auteur Olivier Albertini | 2013-01-03