色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

golang獲取json深度

傅智翔2年前8瀏覽0評論

Golang是一種靜態類型、編譯型、并發型、垃圾回收的編程語言,它擁有垃圾回收、安全堆棧和對并發的良好支持。在處理JSON數據時,有時需要獲取JSON數據的嵌套深度。本文將介紹如何使用Golang獲取JSON數據的深度。

package main
import (
"encoding/json"
"fmt"
"reflect"
)
func main() {
str := `{"name":"Tom","age":18,"address":{"city":"Beijing","district":"Chaoyang","country":"China"}}`
var jsonObj interface{}
err := json.Unmarshal([]byte(str), &jsonObj)
if err != nil {
panic(err)
}
depth := getJsonDepth(jsonObj)
fmt.Println("Json Depth:", depth)
}
func getJsonDepth(jsonObj interface{}) int {
return getJsonMaxDepth(jsonObj, 0)
}
func getJsonMaxDepth(jsonObj interface{}, maxDepth int) int {
if reflect.TypeOf(jsonObj).Kind() != reflect.Map {    // 若當前元素不是 map 類型,則返回當前深度
return maxDepth
}
for _, value := range jsonObj.(map[string]interface{}) {    // 遍歷當前 map 中的所有元素
depth := getJsonMaxDepth(value, maxDepth+1)    // 遞歸獲取該元素的深度
if depth >maxDepth {    // 如果獲取到的深度大于當前最大深度,則更新最大深度
maxDepth = depth
}
}
return maxDepth
}

以上代碼中,我們首先定義了一個JSON字符串,并通過json.Unmarshal()函數將其解析為一個接口類型的實例jsonObj。我們定義了一個getJsonDepth()函數來獲取JSON數據的深度。該函數調用了一個名為getJsonMaxDepth()的遞歸函數來獲取JSON數據的最大深度。通過反射技術,我們可以判斷當前元素是否為map類型,如果是,則遞歸獲取該元素的深度,并將獲取到的深度與當前最大深度進行比較,最終返回最大深度。

在運行代碼時,我們可以看到輸出結果如下:

Json Depth: 2

從輸出結果可以看出,我們成功地獲取了JSON數據的深度。