Skip to content

10x faster then standard lib & dynamic set json

Notifications You must be signed in to change notification settings

daqnext/fastjson

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fastjson

10x faster then standard lib & dynamic set json

examples

go get github.com/daqnext/fastjson

import 
(
    FastJson "github.com/daqnext/fastjson"
)
//////////////////////////////////////////////////////////////////

fj, err := FastJson.NewFromString("{\"test\":123}")
result, _ := fj.GetInt("test")
if result != 123 {
	t.Error("read error")
}
//////////////////////////////////////////////////////////////////

fj := FastJson.NewFromString("{\"test\":123}")
result := fj.GetContentAsString()
if result != "{\"test\":123}" {
	t.Error("read error")
}

//////////////////////////////////////////////////////////////////

fj, err := FastJson.NewFromFile("../test.json")
if err == nil {
	result, _ := fj.GetString("company", "name")
	if result == "acm" {
		t.Error("read error")
	}

}

//////////////////////////////////////////////////////////////////

fj, err := FastJson.NewFromFile("../test.json")
if err == nil {

	result, _ := fj.GetString("company", "name")
	if result == "acm" {
		t.Error("read error")
	}

	_, err := fj.GetBoolean("company", "name")
	if err == nil {
		t.Error("get boolean error")
	}

	flnum, _ := fj.GetInt64("person", "github", "followers")
	if flnum != 109 {
		t.Error("read int error")
	}
}

//////////////////////////////////////////////////////////////////


fj, err := FastJson.NewFromFile("../test.json")
if err == nil {
	fj.ArrayEach(func(value []byte, offset int, err error) {
		link, _ := FastJson.GetString(value, "url")
		if link != "link1" {
			t.Error("read nested error")
		}
	}, "person", "avatars")
}

//////////////////////////////////////////////////////////////////


fj, err := FastJson.NewFromFile("../test.json")
if err == nil {
	link, _ := fj.GetString("person", "avatars", "[0]", "url")
	if link != "link1" {
		t.Error("read  array error")
	}
}

//////////////////////////////////////////////////////////////////

fj, err := FastJson.NewFromFile("../test.json")
if err == nil {
	fj.ObjectEach(func(key []byte, value []byte, offset int) error {
		if string(key) == "last" {
			if string(value) != "Bugaev" {
				t.Error("read object error")
			}
		}
		return nil
	}, "person", "name")
}

//////////////////////////////////////////////////////////////////


fj, err := FastJson.NewFromFile("../test.json")
if err == nil {
	last, _ := fj.GetString("person", "name", "last")
	if last != "Bugaev" {
		t.Error("read  object item error")
	}
}

//////////////////////////////////////////////////////////////////

fj, err := FastJson.NewFromFile("../test.json")
if err == nil {
	fj.SetFloat64(123.123, "person", "weight")
	fj.ClearFileAndOutput("../test.json")
}

fj2, err2 := FastJson.NewFromFile("../test.json")
if err2 == nil {
	r, _ := fj2.GetFloat64("person", "weight")
	if r != 123.123 {
		t.Error("read or set float error")
	}
}

//////////////////////////////////////////////////////////////////

About

10x faster then standard lib & dynamic set json

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages