Go中如何將json文件的內(nèi)容映射到struct

前言

工作中由于項目需求的需要,將json文件的內(nèi)容要映射到struct

1、Json文件內(nèi)容結(jié)構(gòu)的定義

[
{ "GoMethodName":"BasicTypeBool","GoInputParam":{"BasicType":{"boolParam":true}},"JavaReturnData":{"BasicType":{"boolParam":false}},
  "JavaMethodName":"testbool","JavaTypes":"boolean","ElemKey":"boolParam","JavaMapKey":"testbool","PtrFlag":false}
]

2、Struct結(jié)構(gòu)體的定義

type BasicType struct {
    BoolParam  bool  `json:"boolParam"`
    ByteParam  byte  `json:"byteParam"`
    Uint8Param  uint8  `json:"uint8Param"`
    CharParam  string  `json:"charParam"`
    ShortParam  int16 `json:"shortParam"`
    IntParam    int32  `json:"intParam"`
    LongParam   int64  `json:"longParam"`
    Long2Param   int  `json:"long2Param"`
    FloatParam  float32  `json:"floatParam"`
    DoubleParam  float64  `json:"doubleParam"`
    StringParam  string  `json:"stringParam"`
}


type DataJsonStruct struct {
    GoMethodName string
    GoInputParam struct {
        BasicType BasicType  `json:"BasicType"`
    } `json:"GoInputParam"`
    JavaReturnData struct {
        BasicType BasicType  `json:"BasicType"`
    } `json:"JavaReturnData"`
    JavaMethodName string
    JavaTypes      string
    ElemKey        string
    JavaMapKey  string
    PtrFlag        bool
}

3、如何映射代碼

package Test
import (
"fmt"
"encoding/json"
)


//將json解析到struct
func JsonParseToStruct(jsonPath string) []DataJsonStruct{

    var dat []DataJsonStruct

    //基本類型測試數(shù)據(jù)json
    DataJsonStruct := readTestDataFile(jsonPath)
    fmt.Println(DataJsonStruct)
    //解析json
    err := json. Unmarshal ( [ ] byte (DataJsonStruct), &dat )
    if err != nil {
        fmt. Println ( "error:" , err )
    }
    fmt. Printf ( "%+v" , dat )

    for _, v := range dat {
        fmt.Printf("\n %v",v)
    }

    return dat
}


//讀取測試數(shù)據(jù)的文件內(nèi)容
func  readTestDataFile(path string) string{
    fi, err := os.Open(path)
    if err != nil {
        panic(err)
    }
    defer fi.Close()
    fd, err := ioutil.ReadAll(fi)
    return string(fd)
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,062評論 25 709
  • 這一段時間都很閑 工作的事情很繁瑣 但大多都不是必須馬上需要做完的那種 所以我拖延的厲害 養(yǎng)成了壞習(xí)慣 喜歡拖著慢...
    富庶太平閱讀 231評論 0 0
  • 終于看過心心念念的《空天獵》 一個字 酷 你能不能理解在看過《敦克爾科》《血戰(zhàn)湘江》...
    卮言_37d3閱讀 309評論 0 0
  • 8月15日,星期二 豆?jié){店出來,還是收獲滿滿的。 因為拼桌的南寧夫婦告訴我們,南寧的萬達(dá)茂很好玩哦,而且萬達(dá)嘉華度...
    幸運(yùn)花開隨筆閱讀 443評論 4 0

友情鏈接更多精彩內(nèi)容