新鮮出爐的萬能值變數庫 dxsvalue

suiyunonghen發表於2020-03-11

開源地址:https://github.com/suiyunonghen/dxsvalue 萬能值變數,其目的是將 Json,MsgPack 等編碼型別都可以使用本庫來進行操作處理

用法

go get github.com/suiyunonghen/dxsvalue

1、NewValue

v := dxsvalue.NewValue(VT_Object)
v.SetKeyString("Name","不得閒")
v.SetKeyInt("Age",36)
v.SetKeyFloat("Weight",23.5)
//新增一個陣列
arrv := v.SetKey("Children",VT_Array)
//陣列中增加一個物件
child := arrv.SetIndex(0,VT_Object)
child.SetKeyString("Name","Child1")
child.SetKeyString("Sex","boy")
child.SetKeyInt("Age",3)
//陣列中增加一個物件
child = arrv.SetIndex(1,VT_Object)
child.SetKeyString("Name","Child2")
child.SetKeyString("Sex","girl")
child.SetKeyInt("Age",3)
fmt.Println(string(Value2Json(v,nil)))    

以上的程式碼最終的輸出結果為

{
    "Name": "不得閒",
    "Age": 36,
    "Weight": 23.5,
    "Children": [
        {
            "Name": "Child1",
            "Sex": "boy",
            "Age": 3
        },
        {
            "Name": "Child2",
            "Sex": "girl",
            "Age": 3
        }
    ]
}

2、NewValueFromJson

使用本函式主要是從 JSON 中構建一個 DxValue 物件進行操作,有兩個引數,引數 2 指定是否使用 cache,如果使用 了 cache,之後可以使用 FreeValue 對 Value 進行回收,此時使用的 Value 都是 cache 中的物件結構,用法:

str := `{"Result":0,"Name":"不得閒","Age":36,"Weight":167.3,"arr":[ {"gg":23},23 ]}`
v,err := dxsvalue.NewValueFromJson([]byte(str),true)
if err != nil{
    fmt.Println("發生錯誤:",err)
}
defer dxsvalue.FreeValue(v)

3、獲取值

DxValue 可以使用 String,Int,Bool,Float,DateTime,GoTime 等來獲取簡單型別 Value 的相對 應的資料值,相應的使用 SetXXX 函式來設定相應的資料值,AsString,AsInt 等可以用來獲取相應的 key 對應的值

獲取某個節點的值,可以使用 ValueByName() 來查詢到某個節點,然後相應的使用 AsXXX 等函式來獲取,同時也可以 使用 ValueByPath 獲取一個路徑下面的節點,比如要獲取 a/b/c ValueByPath('a','b','c'),相應的也有 StringByPath,BoolByPath 等

4、設定值 使用 SetXX 類的函式,SetKeyXXX 型別的主要用來設定 K-V 結構的資料設定主要針對 Object 型別,SetIndex 型別主 要針對陣列類的資料設定

5、檔案儲存以及格式化

使用 Value2File 可以儲存到 Json 檔案,使用 Value2FormatJson 可以格式化到 json

更多原創文章乾貨分享,請關注公眾號
  • 新鮮出爐的萬能值變數庫 dxsvalue
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章