Admin 856 Đã viết 21/01/2019 Chào các bạn, hôm nay mình xin hướng dẫn các bạn sử dụng thư viện json.net của newtonsoft :). Trong các request hàng ngày, đôi khi các bạn bắt gặp trang web trả về một chuỗi json chứ không phải là một sources html, chuỗi json này thường là kết quả trả về của một request api nào đó, hoặc ajax, rss..vv..vv. Chúng ta có thể lấy dữ liệu bằng cách sử dụng Regex thần thánh, nhưng nhiều khi để đơn giản đỡ nhức óc, chúng ta có thể sử dụng thư viện này cho đoạn chuỗi json. Trước hết chúng ta phân biệt, json trả về có 2 dạng như sau :Dạng 1 ( chuỗi thường ) : string json = @"{ CPU: 'Intel', Drives: [ 'DVD read/writer', '500 gigabyte hard drive' ] }"; Với dạng 1 chúng ta sử dụng lệnh sau để parse đoạn json đó : string json = @"{ CPU: 'Intel', Drives: [ 'DVD read/writer', '500 gigabyte hard drive' ] }"; JObject o = JObject.Parse(json); Dạng 2 ( mảng ) : string json = @"[ 'Small', 'Medium', 'Large' ]"; Với dạng 2 chúng ta sử dụng lệnh sau để parse đoạn json trên : string json = @"[ 'Small', 'Medium', 'Large' ]"; JArray a = JArray.Parse(json); Sau khi parse xong, việc chúng ta làm sẽ là lấy các giá trị trong mảng đó để sử dụng. Ở đây tớ lấy mẫu là dạng 1 nhé, dạng 2 tương tự, các bạn không hiểu dạng 2 làm như thế nào thì có thể reply tại đây, tớ sẽ reply lại lúc nào có thể . Ví dụ chúng ta có 1 chuỗi json như sau, chuỗi này áp dụng với dạng 1 : string json = @"{ 'channel': { 'title': 'James Newton-King', 'link': 'http://james.newtonking.com', 'description': 'James Newton-King\'s blog.', 'item': [ { 'title': 'Json.NET 1.3 + New license + Now on CodePlex', 'description': 'Announcing the release of Json.NET 1.3, the MIT license and the source on CodePlex', 'link': 'http://james.newtonking.com/projects/json-net.aspx', 'categories': [ 'Json.NET', 'CodePlex' ] }, { 'title': 'LINQ to JSON beta', 'description': 'Announcing LINQ to JSON', 'link': 'http://james.newtonking.com/projects/json-net.aspx', 'categories': [ 'Json.NET', 'LINQ' ] } ] } }"; JObject rss = JObject.Parse(json); Bây giờ làm sao để lấy được các giá trị qua các key nhỉ ??? Đây đơn giản vl Ví dụ muốn lấy giá trị James New-King của title trong channel ?? ta code như sau : string rssTitle = (string)rss["channel"]["title"]; // => kết quả trả về rssTitle là : James Newton-King Còn muốn lấy giá trị Json.Net 1.3 + New license + Now on CodePlex thì làm như nào ? ( chú ý ở đây cái item nó là một mảng nên sau item sẽ là phần tử đầu tiên trong mảng [0]) string itemTitle = (string)rss["channel"]["item"][0]["title"]; // kết quả trả về => Json.NET 1.3 + New license + Now on CodePlex hoặc một cách khác, đó là trả về 1 mảng json array trước sau đó mới liệt kê dữ liệu JArray categoriesText = (JArray)rss["channel"]["item"]; MessageBox.Show((string)categoriesText[0]["title"]); // Giá trị trả về cũng là đoạn text như trên ============================================================================================================================ Oke tạm thế đã :") căn bản lả chỉ xài cái đó thôi, còn nếu phức hợp hơn thì các bạn reply tại đây nhé, mình trả lời lại bên dưới.Mẹo : Nội dung ẩn Bạn cần Reaction hoặc trả lời chủ đề này để thấy nội dung bị ẩn. 8 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites