Golangでinterfaceなsliceの長さを調べる
日本語の使い方的にどうなのっていうのはあるがそこは置いく。 コードを見てもらったほうが早いと思うので。
こちらになります。
package main import ( "encoding/json" "fmt" "reflect" "strings" "github.com/mattn/go-jsonpointer" ) func main() { var i interface{} jsonData := `{"fuga": "hoge", "ary": [{"hoge":"piyo"},{"poo": "boo"},{"foo":"bar"}]}` decoder := json.NewDecoder(strings.NewReader(jsonData)) decoder.Decode(&i) fmt.Printf("%v \n", i) // map[fuga:hoge ary:[map[hoge:piyo] map[poo:boo] map[foo:bar]]] fmt.Printf("%T \n", i) // map[string]interface {} ary, _ := jsonpointer.Get(i, “/ary”) r := reflect.ValueOf(ary) fmt.Printf("%v \n", r.Kind()) // slice fmt.Printf("%v \n", r.Len()) // 3 }
こんな変なjsonオブジェクトが返ってくることはないと思うけど。
reflect 使えば interfaceなsliceの長さがわかる(?)。
- 作者: 古川昇
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2012/11/21
- メディア: 単行本(ソフトカバー)
- クリック: 7回
- この商品を含むブログ (5件) を見る
- 作者: 山口徹,Jxck,佐々木大輔,横路隆,加来純一,山本伶,大平武志,米川健一,坂本登史文,若原祥正,和久田龍,平栗遵宜,伊藤直也,佐藤太一,高橋俊幸,海野弘成,五嶋壮晃,佐藤歩,吉村総一郎,橋本翔,舘野祐一,中島聡,渡邊恵太,はまちや2,竹原,河合宜文,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2014/08/23
- メディア: 大型本
- この商品を含むブログを見る