1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| buf := bytes.NewBuffer([]byte(jsonStr))
js, err := simplejson.NewFromReader(buf) if err != nil { log.Printf("unknown format string, error:%v", err) return }
arr, _ := js.Get("test").Get("array").Array()
for i, v := range arr { var iv int switch v.(type) { case json.Number: i64, err := v.(json.Number).Int64() if err != nil { log.Printf("got err %#v\n", err) } iv = int(i64) case string: iv, _ = strconv.Atoi(v.(string)) } if iv != i+1 { log.Printf("got %#v expected %#v\n", iv, i+1) } }
mm := js.Get("test").Get("arraywithsubs").GetIndex(0).MustMap() if !reflect.DeepEqual(mm, map[string]interface{}{"subkeyone": json.Number("1")}) { log.Printf("got %#v\n", mm) }
|