github.com/isyscore/isc-gobase@v1.5.3-0.20231218061332-cbc7451899e9/json/test/json_object_test.go (about)

     1  package test
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/isyscore/isc-gobase/json"
     6  	"github.com/magiconair/properties/assert"
     7  	"testing"
     8  )
     9  
    10  //{
    11  //    "k1":12,
    12  //    "k2":true,
    13  //    "k3":{
    14  //        "k31":32,
    15  //        "k32":"str",
    16  //        "k33":{
    17  //            "k331":12
    18  //        }
    19  //    }
    20  //}
    21  var str = "{\n    \"k1\":12,\n    \"k2\":true,\n    \"k3\":{\n        \"k31\":32,\n        \"k32\":\"str\",\n        \"k33\":{\n            \"k331\":12\n        }\n    }\n}"
    22  
    23  func TestLoad(t *testing.T) {
    24  	jsonData := json.Object{}
    25  	err := jsonData.Load(str)
    26  	if err != nil {
    27  		fmt.Println(err.Error())
    28  		return
    29  	}
    30  
    31  	assert.Equal(t, jsonData.Get("k1"), 12)
    32  	assert.Equal(t, jsonData.Get("k2"), true)
    33  	assert.Equal(t, jsonData.Get("k3.k31"), 32)
    34  	assert.Equal(t, jsonData.Get("k3.k32"), "str")
    35  	assert.Equal(t, jsonData.Get("k3.k33.k331"), 12)
    36  }
    37  
    38  func TestPut1(t *testing.T) {
    39  	jsonObject := json.Object{}
    40  	err := jsonObject.Load(str)
    41  	if err != nil {
    42  		fmt.Println(err.Error())
    43  		return
    44  	}
    45  
    46  	jsonObject.Put("k1", 13)
    47  	jsonObject.Put("k2", false)
    48  	jsonObject.Put("k3.k31", 33)
    49  	jsonObject.Put("k3.k32", "str-change")
    50  	jsonObject.Put("k3.k33.k331", 134)
    51  
    52  	assert.Equal(t, jsonObject.Get("k1"), 13)
    53  	assert.Equal(t, jsonObject.Get("k2"), false)
    54  	assert.Equal(t, jsonObject.Get("k3.k31"), 33)
    55  	assert.Equal(t, jsonObject.Get("k3.k32"), "str-change")
    56  	assert.Equal(t, jsonObject.Get("k3.k33.k331"), 134)
    57  }
    58  
    59  func TestPut2(t *testing.T) {
    60  	jsonObject := json.Object{}
    61  	str := "{\n    \"test\":12,\n    \"ok\":\"haode\",\n    \"k1\":{\n        \"k2\":true,\n        \"k21\":{\n            \"k3\":43,\n            \"k3array\":[\n                1,\n                2,\n                3,\n                4\n            ]\n        }\n    }\n}"
    62  	err := jsonObject.Load(str)
    63  	if err != nil {
    64  		fmt.Println(err.Error())
    65  		return
    66  	}
    67  
    68  	jsonObject.Put("k1.k3", "value1")
    69  	assert.Equal(t, jsonObject.Get("k1.k3"), "value1")
    70  }
    71  
    72  func TestPut3(t *testing.T) {
    73  	jsonObject := json.Object{}
    74  	str := "{\n    \"test\":12,\n    \"ok\":\"haode\",\n    \"k1\":{\n        \"k2\":true,\n        \"k21\":{\n            \"k3\":43,\n            \"k3array\":[\n                1,\n                2,\n                3,\n                4\n            ]\n        }\n    }\n}"
    75  	err := jsonObject.Load(str)
    76  	if err != nil {
    77  		fmt.Println(err.Error())
    78  		return
    79  	}
    80  
    81  	jsonObject.Put("k1.k4.k41", "value41")
    82  	assert.Equal(t, jsonObject.Get("k1.k4.k41"), "value41")
    83  }
    84  
    85  func TestPut4(t *testing.T) {
    86  	jsonObject := json.Object{}
    87  	str := "{\n    \"intValue\":12,\n    \"intValue8\":12,\n    \"intValue16\":12,\n    \"intValue32\":12,\n    \"intValue64\":12,\n    \"stringValue\":\"haode\",\n    \"boolValue\":false,\n    \"objectValue\":{\n        \"field1\":true,\n        \"field2Struct\":{\n            \"f21\":43,\n            \"k2array\":[\n                1,\n                2,\n                3,\n                4\n            ]\n        }\n    }\n}"
    88  	err := jsonObject.Load(str)
    89  	if err != nil {
    90  		fmt.Println(err.Error())
    91  		return
    92  	}
    93  
    94  	assert.Equal(t, jsonObject.GetInt("intValue"), 12)
    95  	assert.Equal(t, jsonObject.GetInt8("intValue"), int8(12))
    96  	assert.Equal(t, jsonObject.GetInt16("intValue"), int16(12))
    97  	assert.Equal(t, jsonObject.GetInt32("intValue"), int32(12))
    98  	assert.Equal(t, jsonObject.GetInt64("intValue"), int64(12))
    99  
   100  	assert.Equal(t, jsonObject.GetString("stringValue"), "haode")
   101  	assert.Equal(t, jsonObject.GetBool("boolValue"), false)
   102  	assert.Equal(t, jsonObject.GetBool("objectValue.field1"), true)
   103  	assert.Equal(t, jsonObject.GetInt("objectValue.field2Struct.f21"), 43)
   104  
   105  	testEntity := TestEntity{}
   106  	_ = jsonObject.GetObject("objectValue", &testEntity)
   107  
   108  	fmt.Println(testEntity)
   109  }
   110  
   111  type TestEntity struct {
   112  	Field1 bool
   113  	Field2Struct TestEntity2
   114  }
   115  
   116  type TestEntity2 struct {
   117  	F21 int
   118  	K2array []int
   119  }