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
Vous devez vous connecter pour publier un commentaire.
Une solution possible que vous pourriez utiliser, qui peut paraître un peu hacky, serait de manipuler la chaîne JSON avant de l'analyser, à l'aide d'une regex par exemple.
Vous permettrait de les identifier et de les remplacer
avec
Ensuite, votre sérialiseur d'identifier un DateTime? propriété nommée "lastUsed"
OriginalL'auteur Catalin
Vous avez besoin de faire de la coutume type "attribut" comme:
Et en faire un Objet de la classe d'attributs dans votre classe d'Adresse.
OriginalL'auteur Umayr