Parse JSON Bằng C# - Phan Tiến Quang

Skip to main content

Parse JSON bằng C#

Trong web, bạn có thể chuyển đổi file JSON qua object rất nhanh chóng bằng javascript. Vậy còn trong windows form, cách chuyển đổi sẽ như thế nào? Đó là nội dung của bài viết này.

JSON là gì? JSON có dùng để làm gì? JSON có lợi ích như thế nào?... Mọi câu hỏi các bạn có thể tham khảo tại đây. Rất đầy đủ và dễ hiểu nên mình không nhắc lại nữa.

Giao diện

Mình tạo 1 ứng dụng windows form với giao diện như sau

Tạo file JSON

Đơn giản là bạn chỉ cần viết nội dung file json vào notepad và lưu với phần mở rộng là *.json. Nội dung file json của mình như sau:

Code

Để đơn giản, mình tạo 1 lớp Employee để lưu thông tin 1 Employee như sau Sự kiện click của button Parse được viết như sau (chú ý những dòng in đậm)
  • Dòng 7: Đầu tiên là đọc nội dung file json, file này được đặt trong cùng thư mục với file .exe. Cần phải using namespace System.IO; để sử dụng StreamReader.
  • Dòng 11: Tạo 1 đối tượng JavaScriptSerializer để thực hiện việc chuyển đổi file json. add reference System.Web.Extensions
  • Dòng 15: Chuyển đổi nội dung của chuỗi (string) json thành một đối tượng dynamic (dynamic là 1 từ khóa, không phải là 1 kiểu dữ liệu, cũng giống như từ khóa var). Tham khảo dynamic tại đây *trollface*.
  • Bắt đầu từ dòng 18, sau khi chuyển đổi file json, obj được coi như 1 mảng và ta lấy dữ liệu như 1 mảng bình thường. Ở đây mình sẽ lấy ra mỗi Employee và thêm vào 1 danh sách, sau đó mới đưa danh sách này lên RichTextbox. Làm như vậy để các bạn biết được cách lấy 1 object từ 1 đối tượng dynamic thôi, bởi vì tới dòng 21 các bạn có thể thêm ngay vào RichTextbox cũng được.

Kết quả

Chú ý
  • Cần file bẫy lỗi trong quá trình đọc file
  • Cần xét các trường hợp obj null hoặc đọc không có field đó. VD obj["employees"][i]["address"] sẽ báo lỗi.
  • Cuối cùng, dynamic là 1 thằng vừa-dễ-vừa-khó sử dụng, cho nên phải cẩn thận khi dùng kiểu dynamic

Source code

Update later

Trên đây là cách parse json đơn giản bằng c#, hiện nay, thao tác với json đã có thư viện newtonsoft json rất hiệu quả, bạn có thể tham khảo bằng link dưới newtonsoft json

Comments

  1. Quang Phan7/29/2014 8:44 PM

    tsasdasdasd test

    ReplyDeleteReplies
    1. Unknown12/23/2014 4:41 PM

      Sao không download được source code vậy

      DeleteReplies
        Reply
    2. Quang Phan12/24/2014 7:51 AM

      Cái này đơn giản mà, hoàn toàn có thể tự viết được :vSource code mình quên chưa upload =))

      DeleteReplies
        Reply
    3. Unknown12/24/2014 9:02 AM

      mình đang tìm hiểu nên gà mờ quá. có thể post cho mình tham khảo được k?

      DeleteReplies
        Reply
    4. Unknown12/24/2014 9:07 AM

      Mà cho mình hỏi, mình muốn lấy dữ liệu từ rest service xuống data thì làm thế nào :3

      DeleteReplies
        Reply
    5. Quang Phan12/24/2014 11:39 AM

      Đơn giản thôi, tìm hiểu bài này nhé http://www.codeproject.com/Articles/344078/ASP-NET-WebAPI-Getting-Started-with-MVC-and-WebAPhoặc dựa vào đoạn code mẫu saupublic HttpClient client = new HttpClient(); public WebApiClient() { client.BaseAddress = new Uri("http://localhost:62387/"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); } public List GetAll(String requestUrl) { var response = client.GetAsync(requestUrl).Result; if (response.IsSuccessStatusCode) { var students = response.Content.ReadAsAsync>().Result; return students; } return null; }

      DeleteReplies
        Reply
    6. Unknown12/25/2014 9:44 AM

      Cảm ơn bạn.. Cho mình hỏi rtbResult là cái gìAppendText thì cần add thư viện gì.

      DeleteReplies
        Reply
    7. Quang Phan12/25/2014 2:44 PM

      rtbResult là cái richtextbox hiển thị ra đó. AppendText là phương thức của cái control đó thôi, không cần thư viện nào nữa.

      DeleteReplies
        Reply
    8. Reply
  2. Unknown5/04/2016 12:26 PM

    bài này bạn viết rất hay viết code rất khoa học. Nhưng viết sai vài chỗ chắc bạn viết chay chưa debug

    ReplyDeleteReplies
    1. Quang Phan5/06/2016 12:03 AM

      hehe, thanks bác đã góp ý. Mình sẽ xem lại và update chỗ sai ^^.

      DeleteReplies
        Reply
    2. Reply
  3. Unknown10/01/2017 11:00 AM

    bạn giải thích giúp mình line 19 với, mình không hiểu &lt là gi vậy ?

    ReplyDeleteReplies
    1. Quang Phan10/02/2017 9:15 PM

      hi My, chỗ đó là 1 vòng for bình thường (lỗi hiển thị thôi)for (int i = 0; i < len; i++) { ... }

      DeleteReplies
        Reply
    2. Reply
Add commentLoad more...

Post a Comment

Popular posts from this blog

Thay đổi quyền ownership trong Windows

Image Một ngày đẹp trời, bạn đang soạn thảo văn bảng bằng MS Word và muốn lưu nó nhưng lỗi không cho phép lưu xuất hiện, hoặc mỗi lần bạn muốn copy file đều phải "xin phép" admin...Đối với những lỗi như vậy, việc đầu tiên nghĩ ngay tới đó là thay đổi quyền ownership. Read more

Gỡ bộ Visual Studio ra khỏi máy tính

Image Cài đặt Visual Studio quả là một công việc "dài hơi", thế nhưng để gỡ nó ra khỏi máy tính thì cũng dài hơi không kém, vì khi cài đặt VS, cả một núi bùi nhùi đi kèm theo nó. Tuy nhiên có 1 giải pháp mà Microsoft đưa ra, "có vẻ" như rất hữu ích. (Mình đã từng gỡ bộ VS 2012 theo cách này, các phiên bản cao hơn đều áp dụng tốt.) Theo cách này, bạn không cần sử dụng Programs and Futures để gỡ mà sử dụng chính bộ cài đặt của VS để gỡ bỏ nó. Read more

Truyền dữ liệu giữa 2 form bằng delegate và event

Image Delegate là một khái niệm không xa lạ gì trong c# và nó cũng có rất nhiều công dụng. Trong nội dung bài viết này, mình xin giới thiệu một công dụng vô cùng hữu dụng của delegate, đó là truyền dữ liệu. Read more

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