Go語言json編碼駝峰轉下劃線 下劃線轉駝峰

2022-01-10 14:29:08 字數 2469 閱讀 1985

目錄golang預設的結構體json轉碼出來,都是根據欄位名生成的大寫駝峰格式,但是一般我們最常用的json格式是小寫駝峰或者小寫下劃線,因此,我們非常需要乙個統一的方法去轉換,而不想挨個寫json標籤,例如

package main

import (

"encoding/json"

"fmt"

)func main()

var a = person

res, _ := json.marshal(a)

fmt.printf("%s", res)

}

執行結果

輸出來的json結構是大寫駝峰的,肯定非常彆扭,當然 ,我們通過設定json標籤來設定輸出的json欄位名,例如

type person struct
但是如果字段特別多,需要挨個設定也太麻煩了。

golang 的標準 json 在處理各種資料型別是都是呼叫其型別介面unmarshaljson解碼和marshaljson編碼進行轉換的,所以我們可以封裝乙個統一轉換下劃線的json結構體或統一轉換駝峰的json結構體,並實現marshaljson方法,就可以達到目的。

實現如下

package jsonconv

import (

"bytes"

"encoding/json"

"log"

"regexp"

"strconv"

"strings"

"unicode"

)/*************************************** 下劃線json ***************************************/

type jsonsnakecase struct

}func (c jsonsnakecase) marshaljson() (byte, error) _$`),

))},

) return converted, err

}/*************************************** 駝峰json ***************************************/

type jsoncamelcase struct

}func (c jsoncamelcase) marshaljson() (byte, error) ,

) return converted, err

}/*************************************** 其他方法 ***************************************/

// 駝峰式寫法轉為下劃線寫法

func camel2case(name string) string

} else

} return buffer.string()

}// 下劃線寫法轉為駝峰寫法

func case2camel(name string) string

// 首字母大寫

func ucfirst(str string) string

return ""

}// 首字母小寫

func lcfirst(str string) string

return ""

}// 內嵌bytes.buffer,支援連寫

type buffer struct

func newbuffer() *buffer

} switch val := i.(type)

return b

} defer func()

}()b.writestring(s)

return b

}

使用jsonconv.jsonsnakecase包裹一下要輸出json的物件即可

func main() 

var a = person

res, _ := json.marshal(jsonconv.jsonsnakecase)

fmt.printf("%s", res)

}

輸出如下

已經指定了下劃線標籤的結構體,我們也可以統一轉為駝峰的json

func main() 

var a = person

res, _ := json.marshal(jsonconv.jsoncamelcase)

fmt.printf("%s", res)

}

輸出如下

非常方便的解決了json統一轉碼格式的需求

駝峰式變數名轉下劃線式 python

最簡單的思路 唯一需要考慮,是直接複製當前字元,還是先加 再複製當前字元。usr bin env python3 defchange variable name listx listy listx 0 for i in range 1 len listx listx i 直接copy 或 先加 再c...

下劃線屬性駝峰對映實體類引數json

有時候通過feign會接收到老系統發來的實體類,和資料庫保持一致,都是下劃線的屬性名,而你需要駝峰對映,你拿到的只是原始資料,網上很多辦法,取字段轉換屬性名,利用註解對映,或者設定工具類之類的,我覺得都比較麻煩,上手程度慢,所以使用了一種簡單方式,json轉換!可以直接自動駝峰對映 before c...

go語言編碼規範

1.規範 1.規範 型別標識 例子int i i icount icount bool b b bshow bshow string s s sname sname uint u u ucolor ucolor float f f fplace fplace pointer p p pname pn...