json モジュールについて (1)

json 形式とは

  • JSON(JavaScript Object Notation)は、データのやり取りや保存に広く使用されるデータ形式

  • 軽量、かつ、可読性が高い.

  • 構成は、"キー"と"値"のペアからなるオブジェクト、とリスト

  • 階層構造が可.

  • Web や多くの言語で使用可能(parserが用意されていることが多い)

json の記法

{
    // This is a sample of json file
    "string" :"This is a pen", 
    "val1"   : 30.0,
    "val2"   : 2,
    "arr1"   : [1.0,2.0,3.0,],
    "sw1"    :true, 
    "sw2"    :false,
    "item"   :null,
    "fml"    : " ` np.cos(${val1}/180.0*np.pi) * ${val2} ` ",
    "fml2"   : " ` np.cos(${val3}/180.0*np.pi) * ${val2} ` ",
    "val3"   : 60.0,
    "val4"   : " ` ${val1} + ${val2} ` ",
    "val5"   : " ` ${val3} * ${val4} ` ",
    "val6"   : " ` ${val5} / ${val1} ` ",
    
    /* comment line */
}

  • {...} 内に記載

  • "キー" : "値", が基本構成

  • リストは [...]、辞書は {...}

  • 論理とNoneは、 true, false, null

  • キー、値(文字列)は、ダブルクォーテーションで囲まなくても問題なし

    • 一方で、 "."をキーに含める場合はエラーがでる.

    • 回避にはダブルクォーテーションが必要.


末尾のカンマ問題(ケツカンマ問題):

  • json形式 :最終行を除いて必ずつける.最終行はつけてはならない.

  • json5形式:各行全てにつけてかまわない( ケツカンマフリー


コメント問題:

  • json形式 :コメントは書けない.無理やり書くなら "comment":"This is a comment." など.

  • json5形式: C-like コメント "//" または、 "/* ... */"


python parser

import ( json / json5 )

import json

or

import json5
  • 上記の通り、 json5が、多機能なので、json5でよい

  • json5は標準モジュールでないので、 pip install する必要あり.


シンプルなjson5 parser コマンド

import json5
inpFile = "cnf/sample.json"
with open( inpFile, "r" ) as f:
    params = json5.load( f )

print( "\n", params, "\n" )


 {'string': 'This is a pen', 'val1': 30.0, 'val2': 2, 'arr1': [1.0, 2.0, 3.0], 'sw1': True, 'sw2': False, 'item': None, 'fml': ' ` np.cos(${val1}/180.0*np.pi) * ${val2} ` ', 'fml2': ' ` np.cos(${val1}/180.0*np.pi) * ${val2} ` '}