আমি সি # এবং জেএসএন ডেটা নিয়ে কাজ করার তুলনায় তুলনামূলকভাবে নতুন এবং দিকনির্দেশ খুঁজছি। আমি .NET3.5SP1 এবং JSON.NET 3.5r6 দিয়ে সি # 3.0 ব্যবহার করছি।
আমার একটি সংজ্ঞায়িত সি # ক্লাস রয়েছে যা আমার একটি জেএসওএন কাঠামো থেকে পপুলেশন করা দরকার। তবে, ওয়েব পরিষেবা থেকে পুনরুদ্ধার করা কোনও এন্ট্রির জন্য প্রতিটি জেএসএন কাঠামোতে সি # শ্রেণির মধ্যে সংজ্ঞায়িত সমস্ত সম্ভাব্য বৈশিষ্ট্য নেই।
আমি যা করছি তা ভুল, শক্ত উপায়ে মনে হচ্ছে যা করছি এবং জওবজেক্ট থেকে প্রতিটি মান একে একে বেছে নেওয়া এবং স্ট্রিংটিকে পছন্দসই শ্রেণীর সম্পত্তিতে রূপান্তর করা।
JsonSerializer serializer = new JsonSerializer();
var o = (JObject)serializer.Deserialize(myjsondata);
MyAccount.EmployeeID = (string)o["employeeid"][0];
জেএসএন কাঠামোকে সি # শ্রেণিতে ডিজিটালাইজ করার এবং জেএসএন উত্স থেকে সম্ভাব্য নিখোঁজ ডেটা হ্যান্ডেল করার সর্বোত্তম উপায় কী?
আমার শ্রেণি হিসাবে সংজ্ঞায়িত করা হয়:
public class MyAccount
{
[JsonProperty(PropertyName = "username")]
public string UserID { get; set; }
[JsonProperty(PropertyName = "givenname")]
public string GivenName { get; set; }
[JsonProperty(PropertyName = "sn")]
public string Surname { get; set; }
[JsonProperty(PropertyName = "passwordexpired")]
public DateTime PasswordExpire { get; set; }
[JsonProperty(PropertyName = "primaryaffiliation")]
public string PrimaryAffiliation { get; set; }
[JsonProperty(PropertyName = "affiliation")]
public string[] Affiliation { get; set; }
[JsonProperty(PropertyName = "affiliationstatus")]
public string AffiliationStatus { get; set; }
[JsonProperty(PropertyName = "affiliationmodifytimestamp")]
public DateTime AffiliationLastModified { get; set; }
[JsonProperty(PropertyName = "employeeid")]
public string EmployeeID { get; set; }
[JsonProperty(PropertyName = "accountstatus")]
public string AccountStatus { get; set; }
[JsonProperty(PropertyName = "accountstatusexpiration")]
public DateTime AccountStatusExpiration { get; set; }
[JsonProperty(PropertyName = "accountstatusexpmaxdate")]
public DateTime AccountStatusExpirationMaxDate { get; set; }
[JsonProperty(PropertyName = "accountstatusmodifytimestamp")]
public DateTime AccountStatusModified { get; set; }
[JsonProperty(PropertyName = "accountstatusexpnotice")]
public string AccountStatusExpNotice { get; set; }
[JsonProperty(PropertyName = "accountstatusmodifiedby")]
public Dictionary<DateTime, string> AccountStatusModifiedBy { get; set; }
[JsonProperty(PropertyName = "entrycreatedate")]
public DateTime EntryCreatedate { get; set; }
[JsonProperty(PropertyName = "entrydeactivationdate")]
public DateTime EntryDeactivationDate { get; set; }
}
এবং পার্স করার জন্য জেএসএনের একটি নমুনা হ'ল:
{
"givenname": [
"Robert"
],
"passwordexpired": "20091031041550Z",
"accountstatus": [
"active"
],
"accountstatusexpiration": [
"20100612000000Z"
],
"accountstatusexpmaxdate": [
"20110410000000Z"
],
"accountstatusmodifiedby": {
"20100214173242Z": "tdecker",
"20100304003242Z": "jsmith",
"20100324103242Z": "jsmith",
"20100325000005Z": "rjones",
"20100326210634Z": "jsmith",
"20100326211130Z": "jsmith"
},
"accountstatusmodifytimestamp": [
"20100312001213Z"
],
"affiliation": [
"Employee",
"Contractor",
"Staff"
],
"affiliationmodifytimestamp": [
"20100312001213Z"
],
"affiliationstatus": [
"detached"
],
"entrycreatedate": [
"20000922072747Z"
],
"username": [
"rjohnson"
],
"primaryaffiliation": [
"Staff"
],
"employeeid": [
"999777666"
],
"sn": [
"Johnson"
]
}