Nên return "key": null hay remove cái "key" ra khỏi kết quả?

Mình muốn hỏi thăm kinh nghiệm của các anh chị developer khi làm việc với JSON, cụ thể là khi goi API và return về:
Vi dụ, dữ liệu về một người (1 object) khi đầy đủ thông tin thì có 5 fields như vầy:

{
    "firstname": "day",
    "middlename": "nhau",
    "lastname": "hoc",
    "age": 5,
    "location": "Sai Gon"
}

Nhưng nếu một vài key trong object đó không có đầy đủ dữ liệu, thì mình nên:

{
    "firstname": "day",
    "middlename": NULL,
    "lastname": "hoc",
    "age": NULL,
    "location": "Sai Gon"
}

hay nên là

{
    "firstname": "day",
    "lastname": "hoc",
    "location": "Sai Gon"
}

Cảm ơn!

2 Likes

Thực ra cả 2 cách đều được cậu ạ :smile: Lựa chọn thường phụ thuộc rất nhiều vào convention của team.
Cách giữ field null thường nhằm mục đích:

  • Chỉ định rõ ràng field đó có tồn tại, tránh nhầm lẫn với vấn đề backward compatibility (cậu gọi tới API cũ thì field đó không tồn tại, ở phiên bản mới thì field đó mới được thêm vào).
  • Đa số các thư viện json by default giữ field null. Nếu muốn bỏ đi, cậu cần tự config -> có thể sẽ gặp các bug không đáng có, cả ở bên publisher lẫn bên consumer.

Loại bỏ field null thường với lý do:

  • Tiết kiệm network bandwidth. Dù vậy, nó không đáng kể lắm, so với việc sử dụng protobuf thay cho JSON.
  • Loại bỏ mấy trường gây nhiễu, để người đọc dễ đọc hơn. Cơ mà nó cũng không đáng kể lắm, trừ khi cậu có rất nhiều null field với model lớn.

Tớ đã từng thấy cả 2 cách này trong các hệ thống khác nhau. Đó là lý do tớ nghĩ việc quyết định này có lẽ liên quan tới taste của từng team hơn.

10 Likes

Vâng, thực tế mình cũng thấy người ta dùng cả 2 cách. Mình muốn hỏi thăm thêm lý do (kiểu như được lợi gì) khi người ta chọn cách đó, để hiểu rõ hơn.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?