Xử Lý Json Trong C# – Norid's Blog

Đọc file

Dùng

+ Jarray đối với cấu trúc mảng object[{},{}]

+ Jobject đối với cấu trúc object {key:value } hoặc object là một mảng {[]}

+ JsonConvert.DeserializeObject() để parse kiểu không xác định (VD ở dưới)

Get value

+ Jarray[index][“key”].ToString() : đối với Jarray

+ Jobject[“key”].ToString() : đối với Jobject

Parse

+ JArray arrItem = (JArray)obj[“item”];

+ JArray arr = JArray.Parse(obj[“item”].ToString());

+ JObject obj = (JObject)jarr[i];

Mẹo

Cứ gặp dấu [] thì dùng Jarray, {} dùng Jobject

Example:

Xử lý bằng code

string str = File.ReadAllText(textBox1.Text); JArray jarr = JArray.Parse(str);//get 1 mảng list object //dynamic jarr = JsonConvert.DeserializeObject(str); for (int i = 0; i < jarr.Count; i++) { JObject obj = (JObject)jarr[i]; //nhận obj thứ i string firstName = obj["firstName"].ToString(); string lastName = obj["lastName"].ToString(); string age = obj["age"].ToString(); //lấy object Address trong obj thứ i JObject objAddress = (JObject)obj["address"]; string streetAddress = objAddress["streetAddress"].ToString(); string city = objAddress["city"].ToString(); string state = objAddress["state"].ToString(); string postalCode = objAddress["postalCode"].ToString(); Student stu = new Student(); stu.FirstName = firstName; stu.LastName = lastName; stu.Age = Int32.Parse(age); stu.Addresses = new List<Address> { new Address { PostalCode = postalCode, StreetAddress = streetAddress, City = city } }; List<PhoneNumber> lstPhone = new List<PhoneNumber>(); //lấy 1 mảng phoneNumber trong obj thứ i JArray jarrPhone = (JArray)obj["phoneNumber"]; for (int j = 0; j < jarrPhone.Count(); j++) { JObject objPhone = (JObject)jarrPhone[i]; string type = objPhone["type"].ToString(); string number = objPhone["number"].ToString(); lstPhone.Add(new PhoneNumber { Type = type, Number = number }); } stu.PhoneNumbers = lstPhone; Db.en.Students.Add(stu); Db.en.SaveChanges(); }

Ghi File

var students = Db.en.Students.ToList(); string JsonResult; //phải config JsonSerializerSettings tránh error reference JsonResult = JsonConvert.SerializeObject(students, Formatting.Indented , new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); FileStream fs = new FileStream(@"D:\aa.txt", FileMode.Create); byte[] vs = Encoding.UTF8.GetBytes(JsonResult); fs.Write(vs, 0, JsonResult.Length); fs.Close();

Share this:

  • X
  • Facebook
Like Loading...

Related

Từ khóa » đọc Json Trong C#