LoginSignup
7

More than 5 years have passed since last update.

JSONのString型はNULL(になることないから)安全です

Last updated at Posted at 2017-03-06

題名通り、JSONのStringはNULLとなることはありません。

参考: RFC7159, RFC8259,

JSONの型

JSONは以下形があるとRFC7159で定められています。

A JSON value MUST be an object, array, number, or string, or one of
the following three literal names:

 false null true

https://tools.ietf.org/html/rfc7159#page-5

また、RFC8259では以下のように書かれています。

A JSON value MUST be an object, array, number, or string, or one of
the following three literal names:

 false
 null
 true

https://tools.ietf.org/html/rfc8259#section-3

とのことより、StringとNULLは別の型であることがわかります。
型が違うのだからStringといったらNULLが入ることは絶対にありません。

でも、往々にして入ってくるし

結局は決めの問題で、システムがー...、案件がー...、担当者がー...、言語仕様がー...、値が無いときにどうするかという仕様でNULLを選んだんだとおもいます。1

しかし、「XXXのJSONのAというValueはString」と決めただけであれば、NULLが入ってくることは偽りようのない不具合で、
もし値が無いことを表現したいのであらば、「値が無い場合はNULLとする」や「何からのFlagで値が無い事を示す」という仕様をつくるべきだと思います。

以上、JSONレスポンスの仕様にString型なのに「NULLが入ることは無い」と書いてしまった、自戒の念を込めて。


  1. PHPのjson_encodeとかで作ると、Stringとして作っててもNULLが入るとnullって入っちゃうと思います。 sample_php: $arr = array('a' => null, 'b' => 2, 'c' => "3", 'd' => 4, 'e' => 5);echo json_encode($arr); 

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7