iT邦幫忙

0

API 回傳的JSON 到底可不可以null ?

我是一個產品API開發者
產品有 APP, 後台 , web 等三個方向,所以我的這個API的開發同時面向這三個不同的團隊。

APP Team 提到他們用那個DataModel的技術還是原因,總之不太希望我回傳回來的值是null
而昨天也有另外一個同事提到JSON 的spection 也提到,null 不應該回傳null, 而是 'null' (資料來源:https://www.json.org/json-en.html)
連true 或 false 都建議使用字串

  1. 不過這部分我就很好奇了?到底我們回傳null 是否合乎json 的spec?那這樣不是代表我們以前包含前人做的都是有問題的嗎 哈哈哈?

  2. 另外,一般來說我們看API 的時候都只有講到RESTful API的部分,還蠻少看到怎麼談API 內部應該如何規劃如何設計? 我應該如何精進自己?讓自己可以設計出很棒的API,滿足這三種不同面向的team?(當然,我覺得文件要寫清楚也是很需要的,所以希望答案不是強調說文件要寫好之類的,當然如果答案是寫好文件,那我也接受啦!)

看更多先前的討論...收起先前的討論...
DanSnow iT邦好手 1 級 ‧ 2020-11-14 13:53:54 檢舉
等等,我用 null 在你貼的那個 spec 裡搜尋,根本就沒看到建議用字串的描述啊
DanSnow iT邦好手 1 級 ‧ 2020-11-14 14:01:04 檢舉
我再看了一下,我想你是不是誤會了,那是類似 EBNF 這種表達語法的語言中表示 terminal symbol 的方法,不是用字串的意思,難道你不覺得大括號什麼的也用 '{' 很怪嗎
r567tw iT邦研究生 5 級 ‧ 2020-11-14 14:10:42 檢舉
喔 原來如此, 謝謝 我知道了 是我誤會了 抱歉
lingoo21 iT邦新手 5 級 ‧ 2020-11-15 20:48:24 檢舉
spec 上是說true, false, null要沒有double quotes.
加了double quotes它們就變成string類型了
———
A value can be a string in double quotes, or a number, or true or false or null, or an object or an array.
r567tw iT邦研究生 5 級 ‧ 2020-11-16 11:09:26 檢舉
了解, 另外想問一下這種API 回傳是好的設計嗎?
---
```
[
{
type: A
A_field: ...
B_field: ...
}
{
type: B
A_field: ...
C_field: ...
D_field: ...
}
]
```
可以啊,但接收JSON端就要先過濾空值或錯誤值的狀況,我的做法是,把API丟回來的東西當字串處理,然後再用json deserialized 轉成我要的object或array
在kQiery則有.fal事件可用
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答