Fiwareを使って都市OSを動かしてみよう

Munu


データ仕様の現状と課題
スマートシティの標準規格(案)
データモデルのユースケース
ツール


Column
Link
用語集

Coppell

Technologies

4. json形式




4.1.jsonの基本
2022年4月11日
 jsonでは、データ(正しくはObject)をKey(正しくはname)とValueの対で記述します。KeyとValueの間にはコロンを入れます。データは波かっこ{}で囲みます。例えば、

{"key": "value"}
というデータのKeyは"key"と言う文字列で、Valueは"value"という文字列になります。Keyは常に文字列でなければなりません。
データが複数のValueから構成される時には、

{"key1": "value1", "key2": "value2", …}
と言うようにカンマで区切って並べます。
 Valueにはfalse / null / true / object(冒頭ではデータと記載) / 列 / 数値 / 文字列を記載することができます。列(複数のValue)を記載する場合は大かっこ[]で囲み個々の列の要素はカンマで区切ります。例えば、以下の様に記載します。この表現は例えば座標などに用いられます。

{"key": ["value1", "value2", "value3", …]}
二次元の行列を表現する場合には、大かっこをネスト(入れ子にすること)させます。この表現は、複数の座標を組み合わせる必要がある、線や多角形などに用いられます。例えば、以下となります。

{"key":[ ["value11", "value12", "value13", …], ["value21", "value22", "value23", …] ["value31", "value32", "value33", …], …]}
Valueにobjectを記述することも可能です。この表現は、住所など、Keyがネストする様なデータの表現に用いられます。例えば以下となります。

{"key1": {"key2": "value2", "key3": "value3", …}}
{}[]:,の6種類の文字の前後には、空白、タブ、改行(正確には改行とキャリッジリターン)を記述する事ができますが、無視されます。つまり、{"Key": "Value"}と以下は同じ意味です。

{
"Key": "Value"
}
Valueに、文字列を記載する場合はダブルクォート(")で囲みます。シングルクォートで囲うことはできません。
文字列には、英数字や日本語などのUnicode を記載できます。特殊文字も記載できますが、以下の記載方法を守る必要があります。バックスペースなどの制御文字を記述する事も可能ですが、ここでは省略します。詳しくはRFC7159などをご確認ください。

文字
UNICODE
記述方法
"
x22
\"
\
x5C
\\
/
x2F
\/
数値は整数、小数、および指数を10進数で記載する事ができます。先頭にゼロを記載することはできません。指数はEで表現しますが、大文字でも小文字でも構いません。例えば、以下の様な記述となります。

100
-1100
200.123
-300.4566
400e5
500E-7



4.2 Smart Data Modelsの制約
2022-12-13
 json標準では非常に自由度が高く、却って相互運用性を損なうため、NGSI V2では色々な制約を規定しています。

制約対象
制約内容
Key(name)
  • アメリカ英語でなくてはならない(ドイツ語のウムラウトや日本語は使えない
  • Attributeの属性名はキャメルケース(Lower Camel Case)でなくてはならない(先頭の単語は小文字、二番目以降の単語の先頭は大文字で、単語をスペースなどを挟まずに繋げた文字列)
Type
  • TypeのValueは先頭が大文字でなくてはならないx5C
id
  • IdのValueは、NGSI-LDの規約に従い、urn:ngsi-ld:<entity-type>:<entity-id>の形式が望ましく、ユニークでなければならない
Value
  • Value内のTypeのValueはschema.orgに準拠する(再利用する)必要がある。
位置情報
  • addressまたはlocation属性を使用しなくてはならない
  • 地理空間はGeoJsonを使う必要がある