Files
Go-StudyExample/example/sJson/BasicSJson_test.go
T

95 lines
2.2 KiB
Go
Raw Normal View History

/*
* @Author : huangzj
* @Time : 2020/12/28 17:29
* @Description
*/
package sJson
import (
"fmt"
"github.com/tidwall/sjson"
"testing"
)
func TestSJsonSet(t *testing.T) {
//测试设值
const json = `{"name":{"first":"li","last":"dj"},"age":18}`
value, _ := sjson.Set(json, "name.last", "dajun")
fmt.Println(value)
}
func TestSJsonDelete(t *testing.T) {
//进行字段删除
var newValue string
user := `{"name":{"first":"li","last":"dj"},"age":18}`
newValue, _ = sjson.Delete(user, "name.first")
fmt.Println(newValue)
newValue, _ = sjson.Delete(user, "name.full")
fmt.Println(newValue)
fruits := `{"fruits":["apple", "orange", "banana"]}`
newValue, _ = sjson.Delete(fruits, "fruits.1")
fmt.Println(newValue)
newValue, _ = sjson.Delete(fruits, "fruits.-1")
fmt.Println(newValue)
newValue, _ = sjson.Delete(fruits, "fruits.5")
fmt.Println(newValue)
}
//测试操作数组,【.下标】表示替代的是哪个位置的元素,-1比较特殊是在数组后面进行添加,如果超过数组长度会自动填充 null上去,这个好像有点尴尬
func TestSJsonOperateList(t *testing.T) {
fruits := `{"fruits":["apple", "orange", "banana"]}`
var newValue string
newValue, _ = sjson.Set(fruits, "fruits.1", "grape")
fmt.Println(newValue)
newValue, _ = sjson.Set(fruits, "fruits.3", "pear")
fmt.Println(newValue)
newValue, _ = sjson.Set(fruits, "fruits.-1", "strawberry")
fmt.Println(newValue)
newValue, _ = sjson.Set(fruits, "fruits.5", "watermelon")
fmt.Println(newValue)
}
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
//测试SJson支持设置的所有类型
func TestSJsonAllType(t *testing.T) {
nilJSON, _ := sjson.Set("", "key", nil)
fmt.Println(nilJSON)
boolJSON, _ := sjson.Set("", "key", false)
fmt.Println(boolJSON)
intJSON, _ := sjson.Set("", "key", 1)
fmt.Println(intJSON)
floatJSON, _ := sjson.Set("", "key", 10.5)
fmt.Println(floatJSON)
strJSON, _ := sjson.Set("", "key", "hello")
fmt.Println(strJSON)
mapJSON, _ := sjson.Set("", "key", map[string]interface{}{"hello": "world"})
fmt.Println(mapJSON)
u := User{Name: "dj", Age: 18}
structJSON, _ := sjson.Set("", "key", u)
fmt.Println(structJSON)
}