Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 13
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Làm cách nào để tuỳ chỉnh JSON trả về

    Mình đang làm 1 ứng dụng về Web API tuy nhiên vấn đề là Web API nó chỉ trả về dạng JSON, mình thì nào giờ cũng có sử dụng JSON tuy nhiên chỉ là JSON theo danh sách 1 cấp, ví dụ như return JSON danh sách sản phẩm với các tham số từ db.

    Xong hiện nay mình thấy có nhiều đoạn JSON nó trả về theo dạng như sau

    Kiểu này thường mình thấy nó dùng để làm menu, hay tree view
    Mình thì chưa làm kiểu này lần nào! nên mới pm hỏi mấy bạn

    Và cuối cùng là vấn đề mình là mình chưa hiểu làm cách nào từ 1 bảng trong mà có thể trả về 1 cái JSON như vậy
    Ví dụ: Categories: Id, Name, ParentId, Url
    đấy làm sao mà từ 1 bảng trong csdl như thế có thể trả về 1 cái JSON 1 cấp, 2 cấp, nhiều cấp

    Có người chỉ mình tự định nghĩa cho output JSON mình thì chưa có bất kỳ ý tưởng cũng như khái niệm của nó nên post lên hy vọng có ai đó chỉ [IMG]images/smilies/smile.png[/IMG]

  2. #2
    Bạn có thể hiểu như này:
    JSON chỉ là một string, không hơn không kém.
    Tuy nhiên là nó có các quy tắc để tạo string đó sao cho, dữ liệu được trao đổi phải đảm bảo tính toàn vẹn và an toàn.
    ~~> nó là một string có cấu trúc.
    Nếu như trong ngôn ngữ java, c#... bạn dùng object để trao đổi thông tin giữa các class với nhau, thì web API dùng JSON hoặc XML để trao đổi thông tin giữa web client và server.
    Ref JSON

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Hiểu được cấu trúc JSON trước rồi thì việc sử dụng rất đơn giản
    Bạn bày cách thiết kế 1 cấu trúc JSON dựa trên cấu trúc dữ liệu như sau:


    Mã:
    struct Student{    int id;    string *name;}; struct Class{    int id;    int num;    Student *student;};
    Cấu trúc JSON tương ứng sẽ như sau:
    Mã:
    { //student
    	"id":"123", 
    	"name":[
    		"firstName":"John",
    		"lastName":"Doe"
    	]
    }
    
    {//class
    	"id":"09TH", 
    	"num":"3", 
    	"student":[
    		{"id":"111", {"firstName":"John", "lastName":"Doe"}}, 
    		{"id":"222", {"firstName":"Anna", "lastName":"Smith"}}, 
    		{"id":"333", {"firstName":"Peter", "lastName":"Jones"}}
    	]
    }

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Vậy còn nếu 1 class thì sao bạn vd như: Categories: Id, Name, ParentId
    Chứ cách 2 class như bạn chỉ thì mình biết rồi, còn từ 1 class ấy

  5. #5
    Ngày tham gia
    Sep 2015
    Đang ở
    89 Tam Trinh - Hoàng Mai - Hà Nội
    Bài viết
    0
    Cái phức tạp thì bạn nói hiểu, còn cái đơn giản thì bạn lại bảo không biết sử dụng. Thế thì chịu!

    Mã:
    {    "Categories":[        "Id":"123",         "Name":"abc",         "ParentId":"xyz"    ]}
    nếu chưa quen thì thực hành thêm thôi. Chứ chẳng ai có thời gian giúp bạn hơn nữa đâu.

    - - - Nội dung đã được cập nhật ngày 31-01-2015 lúc 10:43 AM - - -

    http://www.w3schools.com/json/
    ~~> đây là page để thực hành

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Hình như bạn đọc chưa kỹ bài viết của mình ấy nhỉ?

    Mã:
        {        "Categories":[            "Id":"123",            "Name":"abc",            "ParentId":"xyz"        ]    }
    Ở đây mình muốn là 1 class Categories như trên có thể trả về 1 cái Json được phân cấp theo ParentId
    Chứ ko phải trả về cái Json như của bạn? bạn có đọc kỹ bài mình chưa nhỉ?

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn tự nghĩ cách đi nhé. Giúp thì đã giúp đến thế rồi. Không thể làm thay công việc của bạn được đâu.

  8. #8
    nếu mình nhớ không nhầm thì Web API tự động trả về kiểu dữ liệu dựa vào content-type từ request gọi lên. Và khi trả về thì Web API cũng sẽ tự làm cái việc tạo ra 1 string có cấu trúc json, ngay cả khi bạn return 1 anonymous object. Như vậy để trả về 1 json phân cấp mà không muốn tạo thêm class thì cứ việc trả về 1 anonymous object nhiều tầng thôi. Tuy nhiên nếu mà nhiều tầng thì khá rối rắm.

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Có một cách đơn giản nhưng mà code lại cầu kỳ đó là bạn dùng stringbuilder thích tạo ra thế nào cũng được @@

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    stringbuilder tạo được nhưng cách đó không được chấp nhận vì code đó dài dòng. Mình thấy Yêu thú lai tiên <= con rồng cháu tiên chỉ rất cụ thể rồi.
    Mã:
    public class Categories{public int id{get;set;},public List<selectListItem> ParentId{get;set}
    c# thì chỉ cần tạo 1 list<Categories> rồi trả về là dc.

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •