7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JSONの中身がプレーンオブジェクトとは限らない

Last updated at Posted at 2022-02-21

タイトルのとおり、JSONの中身がプレーンオブジェクトとは限りません。配列だけかもしれないし、数値だけかもしれません。

※プレーンオブジェクト:↓こんなやつ

{
    "aa": "bb"
}

どういうこと?

VS CodeでJSONファイルを作って適当に「aaa」と入れると、「Expected a JSON object, array or literal.」という警告が表示されます。「aaa」と書いただけのファイルは無効なJSONファイルですが、警告のとおり、JSONオブジェクト、配列またはリテラルなら何でも入れられます。

image.png

たとえば、これらは左上の「aaa」以外すべて有効なJSONファイルです。また、画像にはありませんが、nullのみでも有効です。

image.png

実際MDNには、文字列や数値だけでも有効なJSONになると書かれています。

JSONは、配列やオブジェクトだけでなく、 JSON 内部に入れることができるあらゆるデータ型のデータだけでも有効なものになります。つまり、例えば、単一の文字列や数値も有効な JSON となります。

JSON の操作 - ウェブ開発を学ぶ | MDN

また、TypeScriptのJSON.parse()の戻り値の型がanyなのは、JSONの中身がobject型とは限らないからと思われます。

まとめ

JSONファイルの中身は数値だけかもしれないし、真偽値だけかもしれません。プレーンオブジェクトとは限らないので、プレーンオブジェクト前提の処理を書くと困ることがあるかもしれません。

7
1
2

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?