# README
DJSON: Another JSON Library for who hates json.Unmarshal
DJSON v2
- Compared to v1, the names of the functions are simple in v2.
- Various useful functions for handling djson structure are included in DJSON v2.
- github.com/lokks307/go-util will not serve DJSON v2 any more.
1. Basic Syntax for v1
1.1. New JSON
mJson := djson.New()
1.2. Assign values to JSON
// Array
mJson := djson.New()
mJson.Put(djson.Array{
1,2,3,4,5,6,
})
fmt.Println(mJson.ToString()) // must be [1,2,3,4,5,6]
// Object
mJson := djson.New()
mJson.Put(djson.Object{
"name": "Hery Victor",
"idade": 32,
})
fmt.Println(mJson.ToString()) // must be {"idade":32,"name":"Hery Victor"}
1.2. Assign Arrays to JSON
mJson := djson.New()
intArray := []int{1, 2, 3, 4, 5}
intVal := 3
strArray := []string{"yes", "this", "is right"}
strVal := "abc"
mJson.Put("int_array", djson.NewArray(intArray))
mJson.Put("int_val", intVal)
mJson.Put("str_array", djson.NewArray(strArray))
mJson.Put("str_val", strVal)
fmt.Println(mJson.ToString())
// must be like {"int_array":[1,2,3,4,5],"int_val":3,"str_array":["yes","this","is right"],"str_val":"abc"}
1.3. Assign table values to JSON
mJson := djson.New()
mJson.Put(
djson.Array{
djson.Object{
"name": "Ricardo Longa",
"idade": 28,
"skills": djson.Array{
"Golang",
"Android",
},
},
djson.Object{
"name": "Hery Victor",
"idade": 32,
"skills": djson.Array{
"Golang",
"Java",
},
},
},
)
fmt.Println(mJson.ToString()) // must be like [{"idade":28,"name":"Ricardo Longa","skills":["Golang","Android"]},{"idade":32,"name":"Hery Victor","skills":["Golang","Java"]}]
1.4. Append values to existing JSON
// Array
mJson := djson.New()
mJson.Put(djson.Array{
1,2,3,4,5,6,
})
mJson.Put(djson.Array{
7,8,9,
})
fmt.Println(mJson.ToString()) // must be [1,2,3,4,5,6,7,8,9]
// Object
mJson := djson.New()
mJson.Put(djson.Object{
"idade": 28,
})
mJson.Put(djson.Object{
"name":"Hery Victor",
})
mJson.Put(djson.Object{
"name":"Ricardo Longa", // overwrite existing value
})
fmt.Println(mJson.ToString()) // must be like {"idade":28,"name":"Ricardo Longa"}
1.5. Parse existing JSON string
jsonDoc := `[
{
"name":"Ricardo Longa",
"idade":28,
"skills":[
"Golang","Android"
]
},
{
"name":"Hery Victor",
"idade":32,
"skills":[
"Golang",
"Java"
]
}
]`
mJson := djson.New().Parse(jsonDoc)
fmt.Println(mJson.ToString()) // must be like [{"idade":28,"name":"Ricardo Longa","skills":["Golang","Android"]},{"idade":32,"name":"Hery Victor","skills":["Golang","Java"]}]
1.6. Get values
jsonDoc := `[
{
"name":"Ricardo Longa",
"idade":28,
"skills":[
"Golang","Android"
]
}
]`
mJson := djson.New().Parse(jsonDoc)
// must be like [{"idade":28,"name":"Ricardo Longa","skills":["Golang","Android"]}]
fmt.Println(mJson.ToString())
// must be like {"idade":28,"name":"Ricardo Longa","skills":["Golang","Android"]}
fmt.Println(mJson.String(0))
aJson, _ := mJson.Object(0)
fmt.Println(aJson.Int("idade")) // 28
fmt.Println(aJson.String("idade")) // 28
fmt.Println(aJson.Int("name")) // 0
fmt.Println(aJson.String("name")) // Ricardo Longa
fmt.Println(aJson.String("skills")) // ["Golang","Android"]
2. Advanced Syntax
2.1. Check if JSON has key
jsonDoc := `{
"name":"Ricardo Longa",
"idade":28,
"skills":[
"Golang","Android"
]
}`
mJson := djson.New().Parse(jsonDoc)
aJson, _ := mJson.Array("skills")
fmt.Println(mJson.HasKey("skills")) // true
fmt.Println(aJson.Haskey(1)) // true
fmt.Println(aJson.HasKey("addr")) // false
2.2. Update value via path
jsonDoc := `[{
"name":"Ricardo Longa",
"idade":28,
"skills":[ "Golang","Android" ]
},
{
"name":"Hery Victor",
"idade":32,
"skills":[ "Golang", "Java" ]
}]`
mJson := djson.New().Parse(jsonDoc)
_ = mJson.UpdatePath(`[1]["name"]`, djson.Object{
"family": "Victor",
"first": "Hery",
})
// must be like
// [{"idade":28,"name":"Ricardo Longa","skills":["Golang","Android"]},
// {"idade":32,"name":{"family":"Victor","first":"Hery"},"skills":["Golang","Java"]}]
fmt.Println(mJson.ToString())
2.3. Remove value via path
jsonDoc := `[{
"name":"Ricardo Longa",
"idade":28,
"skills":[ "Golang","Android" ]
},
{
"name":"Hery Victor",
"idade":32,
"skills":[ "Golang", "Java" ]
}]`
mJson := djson.New().Parse(jsonDoc)
_ = mJson.RemovePath(`[1]["skills"]`)
// must be like
// [{"idade":28,"name":"Ricardo Longa","skills":["Golang","Android"]},{"idade":32,"name":"Hery Victor"}]
fmt.Println(mJson.ToString())
2.4. Manipluate value via sharing
jsonDoc := `[{
"name":"Ricardo Longa",
"idade":28,
"skills":["Golang","Android"]
},
{
"name":"Hery Victor",
"idade":32,
"skills":["Golang","Java"]
}]`
aJson := djson.New().Parse(jsonDoc)
bJson, _ := aJson.Object(1) // now, bJson shares *djson.DO with aJson
bJson.Put(djson.Object{"hobbies": djson.Array{"game"}}) // append Array to Object
bJson.UpdatePath(`["hobbies"][1]`, "running") // append value to Array
bJson.UpdatePath(`["hobbies"][0]`, "art") // replace value
// must be like
// [{"idade":28,"name":"Ricardo Longa","skills":["Golang","Android"]},
// {"hobbies":["art","running"],"idade":32,"name":"Hery Victor","skills":["Golang","Java"]}]
fmt.Println(aJson.ToString())
2.4. Default Value
jsonDoc := `{
"name":"Ricardo Longa",
"idade":28,
"skills":["Golang","Android"]
}`
mJson := djson.New().Parse(jsonDoc)
fmt.Println(mJson.Int("idade", 10)) // must be 28 which is int64
fmt.Println(mJson.Int("name", 10)) // must be 10 because `name` field cannot be convert to integer
fmt.Println(mJson.Int("hobbies", 10)) // must be 10 because no such field `hobbies`
2.5. To Structure
- DJSON supports null package for sqlboiler (
github.com/volatiletech/null
)
type User struct {
Id string `json:"id"`
Name string `json:"name"`
Email null.String `json:"email"`
}
var user User
mJson := djson.New().Put(
Object{
"id": "id-1234",
"name": "Ricardo Longa",
"email": "[email protected]",
},
)
mJson.ToFields(&user, "id", "email") // only (`id`, `email`) tag
fmt.Println(user) // must be {id-1234 {[email protected] true}}
2.6. From Structure
type User struct {
Id string `json:"id"`
Name string `json:"name"`
Email null.String `json:"email"`
}
var user = User{
Id: "id-1234",
Name: "Ricardo Longa",
Email: null.String{
String: "[email protected]",
Valid: true,
},
}
mJson := djson.New()
mJson.FromFields(user) // no tag
// must be like {"email":"[email protected]","id":"id-1234","name":"Ricardo Longa"}
fmt.Println(mJson.ToString())
2.7. From Map and Structure
type Name struct {
First string `json:"first"`
Family string `json:"family"`
}
user := make(map[string]interface{})
user["id"] = "id-1234"
user["name"] = Name{
First: "Ricardo",
Family: "Longa",
}
user["email"] = null.String{
String: "[email protected]",
Valid: true,
}
mJson := djson.New()
mJson.FromFields(user, "name.first", "email") // tag has depth concept
// must be like {"email":"[email protected]","name":{"first":"Ricardo"}}
fmt.Println(mJson.ToString())
# Functions
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
ISO 3166-2 : KR-XX, GH-XX, ...
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
js must be array json.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
o = object djson.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Constants
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Variables
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
.NET JavaScriptSerializer.MaxJsonLength.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author