1
2

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 5 years have passed since last update.

そろそろJSONの扱い方に慣れておこう...その1

Last updated at Posted at 2019-03-21

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ファイルを用意

127.0.0.1_8888_edit_test_test.json.png

サンプルコード

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ファイルを読み込んだ上で必要な要素にアクセスできました(*‘∀‘)
127.0.0.1_8888_notebooks_test_json_load_test.ipynb.png

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/
#
1
2
0

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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?