/* github.com/buger/jsonparser */ func BenchmarkJsonParserLarge(b *testing.B) { for i := 0; i < b.N; i++ { jsonparser.ArrayEach(largeFixture, func(value []byte, dataType jsonparser.ValueType, offset int, err error) { jsonparser.Get(value, "username") nothing() }, "users") jsonparser.ArrayEach(largeFixture, func(value []byte, dataType jsonparser.ValueType, offset int, err error) { jsonparser.GetInt(value, "id") jsonparser.Get(value, "slug") nothing() }, "topics", "topics") } }
/* github.com/buger/jsonparser */ func BenchmarkJsonParserMedium(b *testing.B) { for i := 0; i < b.N; i++ { jsonparser.Get(mediumFixture, "person", "name", "fullName") jsonparser.GetInt(mediumFixture, "person", "github", "followers") jsonparser.Get(mediumFixture, "company") jsonparser.ArrayEach(mediumFixture, func(value []byte, dataType jsonparser.ValueType, offset int, err error) { jsonparser.Get(value, "url") nothing() }, "person", "gravatar", "avatars") } }
func googleLegacy(u utils.Utils, url string) result { start := time.Now() var res result urlJson, err := json.Marshal(url) if err != nil { res.Error = err return res } // http://bradsknutson.com/blog/get-google-share-count-url/ body := `[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":` + string(urlJson) + `,"source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]` req, err := http.NewRequest("POST", "https://clients6.google.com/rpc", bytes.NewBufferString(body)) if err != nil { res.Error = err return res } utils.Verbosef(u, "Calling http.Client.Do(body=%s)", body) req.Header.Set("Content-Type", "application/json") resp, err := u.HttpClient().Do(req) if err != nil { res.Error = err return res } defer resp.Body.Close() respBody, err := ioutil.ReadAll(resp.Body) if err != nil { res.Error = err return res } res.Response = respBody u.Debugf("googleLegacy(url=%s) took %s", url, time.Since(start)) jsonparser.ArrayEach(respBody, func(element []byte, _ jsonparser.ValueType, _ int, err error) { if err != nil { res.Error = err return } if count, err := jsonparser.GetFloat(element, "result", "metadata", "globalCounts", "count"); err != nil { res.Error = err return } else { res.Count = int64(count) } }) return res }