読者です 読者をやめる 読者になる 読者になる

機械語と数学とことば

更新が進みません.

【プログラミング&テキスト解析】Go言語でJSONファイルを読み込む

前回は,n-gramをつくるスクリプトを書きましたが, やはり,JSONだったり,CSVからデータを読み取りたいですよねー.

というわけで,今回は下記のようなJSONファイルを./input/test.jsonとして格納し,読み込むスクリプトを書いてみました!

[
    {"id":1, "text":"つれずれなるままに"},
    {"id":2, "text":"ひぐらしすずりにむかいて"},
    {"id":3, "text":"こころにうつりゆくよしなしごとを"},
    {"id":4, "text":"そこはかとなくかきつくれば"},
    {"id":5, "text":"あやしうこそものぐるおしけれ"}
]

まずは,Pythonで読み込む場合を紹介します.

import json as js

jsonfile = open('./input/test.json','r')
datasets = js.load(jsonfile)

Pythonの場合はこれだけで,Dictが要素になるlistデータをインポートできます.

では,Go言語で書いた場合はこちら.json_tool.goというファイル名で作ります.

package main
import (
    "encoding/json"
    "fmt"
    "io/ioutil"
)

type Dataset struct {
    ID int `json:"id"`
    Text string `json:"text"`
}

func main(){
    // Loading jsonfile
    file, err := ioutil.ReadFile("./input/test.json")
    // 指定したDataset構造体が中身になるSliceで宣言する
    var datasets []Dataset
    json_err := json.Unmarshal(file, &datasets)
    if err!=nil{
        fmt.Println("Format Error: ", json_err)
    }
    fmt.Println(datasets)
    fmt.Println(datasets[0].Text)
    fmt.Println(datasets[2].ID)
}

実行します

$ go run json_tool.go


[{1 つれづれなるままに} {2 ひぐらしすずりにむかいて} {3 こころにうつりゆくよしなしごとを} {4 そこはかとなくかきつくれば} {5 あやしうこそものぐるおしけれ}]

つれづれなるままに

3

Sliceの参考資料は下記を参照のこと.

Go言語のArrayとSliceについて - done is better than perfect

意外と簡単ですね!