JSON(JavaScript Object Notation)とは
軽量なデータ記述言語の1つである。構文はJavaScriptにおけるオブジェクトの表記法をベースとしているが、JSONはJavaScript専用のデータ形式では決してなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しに使えるよう設計されている。[参照1]:https://ja.wikipedia.org/wiki/JavaScript_Object_Notation
もともとはjavascriptにおける表現記法だったみたいですが、今ではいろいろなところで見かけますね('ω')
JSONの書き方
詳しい内容については後日補足するかもしれませんが、今は省略いたします。以下のようにデータを表現を扱うみたいです...(*‘∀‘) [参照2]:https://qiita.com/chihiro/items/dd1912c1406dbfe16b72
{
"character" : {
"name": "Taro",
"url":https://www.ccc.bbb.aaa.jp
}
}
もう少し細かく書いてみると以下のようになるみたいです...
{
"kasumi_toyama": {
"url": "http://bangdream.gamedbs.jp/chara/show/11/"
},
"tae_hanazono": {
"url": "http://bangdream.gamedbs.jp/chara/show/10/"
},
"rimi_ushigome": {
"url": "http://bangdream.gamedbs.jp/chara/show/25/"
}
}
PythonでJSONファイルを読み込む
上記で書いたjsonファイルを試しにPython(Python3)で読み込んでみましょう('ω')
JSONファイルを用意
サンプルコード
import json
def main():
f = open("test.json", 'r')
json_data = json.load(f) #JSON形式で読み込む
print(json_data)
for name in json_data.keys():
print(json_data[name]["url"])
if __name__=='__main__':
main()
実行結果
うまくいきましたね('ω') jsonファイルを読み込んだ上で必要な要素にアクセスできました(*‘∀‘)
GoでJSONファイルを読み込む
上記で書いたjsonファイルを試しにGoで読み込んでみましょう('ω')(後日、追記したので実行結果の出力が増えています)
サンプルコード
package main
import (
"fmt"
"io/ioutil"
"log"
simplejson "github.com/bitly/go-simplejson"
)
func main() {
//jsonファイルの読み込み
bytes, err := ioutil.ReadFile("./json/test.json")
if err != nil {
log.Fatal(err)
}
// []byte型からjson型へ変換
json, err := simplejson.NewJson(bytes)
//fmt.Println(json)
for i, _ := range json.MustMap() {
fmt.Printf("name: %s\n", i)
fmt.Printf("url: %s\n", json.Get(i).Get("url").MustString())
}
}
実行結果
色々なソースを参考にしながら試行錯誤していましたが、Goでもうまく読み込めました('ω')
# go run go-simplejson-test.go
name: yukina_minato
url: http://bangdream.gamedbs.jp/chara/show/15/
name: rinko_shirogane
url: http://bangdream.gamedbs.jp/chara/show/13/
name: saaya_yamabuki
url: http://bangdream.gamedbs.jp/chara/show/24/
name: ran_mitake
url: http://bangdream.gamedbs.jp/chara/show/22/
name: moka_aoba
url: http://bangdream.gamedbs.jp/chara/show/9/
name: tomoe_udagawa
url: http://bangdream.gamedbs.jp/chara/show/8/
name: kokoro_tsurumaki
url: http://bangdream.gamedbs.jp/chara/show/7/
name: seta_kaoru
url: http://bangdream.gamedbs.jp/chara/show/19/
name: kasumi_toyama
url: http://bangdream.gamedbs.jp/chara/show/11/
name: tae_hanazono
url: http://bangdream.gamedbs.jp/chara/show/10/
name: arisa_ichigaya
url: http://bangdream.gamedbs.jp/chara/show/23/
name: kanon_matsubara
url: http://bangdream.gamedbs.jp/chara/show/18/
name: hina_hikawa
url: http://bangdream.gamedbs.jp/chara/show/17/
name: chisato_shirasagi
url: http://bangdream.gamedbs.jp/chara/show/4/
name: maya_yamato
url: http://bangdream.gamedbs.jp/chara/show/16/
name: eve_wakamiya
url: http://bangdream.gamedbs.jp/chara/show/3/
name: rimi_ushigome
url: http://bangdream.gamedbs.jp/chara/show/25/
name: himari_uehara
url: http://bangdream.gamedbs.jp/chara/show/21/
name: tsugumi_hazawa
url: http://bangdream.gamedbs.jp/chara/show/20/
name: hagumi_kitazawa
url: http://bangdream.gamedbs.jp/chara/show/6/
name: misaki_okuzawa
url: http://bangdream.gamedbs.jp/chara/show/12/
name: aya_maruyama
url: http://bangdream.gamedbs.jp/chara/show/5/
name: sayo_hikawa
url: http://bangdream.gamedbs.jp/chara/show/2/
name: risa_imai
url: http://bangdream.gamedbs.jp/chara/show/14/
name: ako_udagawa
url: http://bangdream.gamedbs.jp/chara/show/1/
#