这是我需要验证的 JSON 文档。我必须检查孩子中的所有 parent_id 是否正确。如果所有父子 ID 都是正确的,我将返回一个“有效”字符串。
{
"id": 10,
"children": [
{
"id": 25,
"parent_id": 10,
"children": [
{
"id": 131,
"parent_id": 25,
"children": null
},
{
"id": 33,
"parent_id": 25,
"children": [
{
"id": 138,
"parent_id": 33,
"children": null
},
{
"id": 139,
"parent_id": 33,
"children": null
},
{
"id": 140,
"parent_id": 33,
"children": null
},
{
"id": 160,
"parent_id": 33,
"children": null
},
{
"id": 34,
"parent_id": 33,
"children": [
{
"id": 26,
"parent_id": 34,
"children": null
},
{
"id": 64,
"parent_id": 34,
"children": null
},
{
"id": 65,
"parent_id": 34,
"children": null
}
]
},
{
"id": 35,
"parent_id": 33,
"children": null
},
{
"id": 36,
"parent_id": 33,
"children": null
},
{
"id": 38,
"parent_id": 33,
"children": null
},
{
"id": 39,
"parent_id": 33,
"children": null
},
{
"id": 40,
"parent_id": 33,
"children": null
},
{
"id": 41,
"parent_id": 33,
"children": null
},
{
"id": 42,
"parent_id": 33,
"children": null
},
{
"id": 148,
"parent_id": 33,
"children": null
}
]
},
{
"id": 66,
"parent_id": 25,
"main_id": 66,
"children": [
{
"id": 144,
"parent_id": 66,
"children": null
},
{
"id": 146,
"parent_id": 66,
"children": null
},
{
"id": 147,
"parent_id": 66,
"children": null
},
{
"id": 67,
"parent_id": 66,
"children": null
}
]
}
]
}
]
}
我使用此代码进行迭代。但比较不成功。我从一个堆栈溢出问题中得到了这段代码。我有点困惑从哪里开始。
func parseMap(aMap map[string]interface{}) {
for key, val := range aMap {
switch concreteVal := val.(type) {
case map[string]interface{}:
// if key == "id" {
fmt.Println(key)
// }
parseMap(val.(map[string]interface{}))
case []interface{}:
// if key == "id" {
fmt.Println(key)
// }
parseArray(val.([]interface{}))
default:
fmt.Println(key, ":", concreteVal)
// if key == "parent_id" || key == "main_id" {
// }
}
}
}
func parseArray(anArray []interface{}) {
for i, val := range anArray {
switch concreteVal := val.(type) {
case map[string]interface{}:
fmt.Println("Index:", i)
parseMap(val.(map[string]interface{}))
case []interface{}:
fmt.Println("Index:", i)
parseArray(val.([]interface{}))
default:
fmt.Println("Index", i, ":", concreteVal)
}
}
}
func main(w http.ResponseWriter, r *http.Request) {
// data, err := ioutil.ReadAll(r.Body)
m := map[string]interface{}{}
err := json.Unmarshal([]byte(input), &m)
if err != nil {
panic(err)
}
parseMap(m)
}
我从 API 中获取值,但现在我很难编码 Json 值