尝试为地图的每个部分创建一个for循环。
map[
asn:AS10
time:1.428790768e+09
ipv4s:[
68.114.75.0/24
216.215.56.0/22
216.215.60.0/22]
ipv6s:[
2607:f3f8::/32
]]
上面是地图,我想尝试为ipv4s
中的每个值创建一个for循环。
我尝试过,但我显然没有正确地做到这一点,因为它仅仅基于我的PHP知识。:
for json_map["ipv4s"]{
//whatever
}
PHP版本,如果有人需要一个例子而不是我试图解释:
foreach($obj->ipv4s as $value) {
echo $value; // return an ip
}
更新
package main
import (
"fmt"
"net/http"
"os"
"encoding/json"
)
func main() {
response, err := http.Get("https://www.enjen.net/asn-blocklist/index.php?asn=" + os.Args[1] + "&type=json_split&api=1")
if err != nil {
fmt.Printf("%s", err)
os.Exit(1)
} else {
defer response.Body.Close()
dec := json.NewDecoder(response.Body)
if dec == nil {
panic("Failed to start decoding JSON data")
}
json_map := make(map[string]interface{})
err = dec.Decode(&json_map)
if err != nil {
panic(err)
}
fmt.Printf("%v\n", json_map)
for i := range json_map {
for _, ip := range json_map[i]["ipv4s"] {
fmt.Printf(ip)
}
}
}
}
答案 0 :(得分:1)
Effective Go是一个很好的资源。 在那里还描述了如何迭代切片:
for key, value := range json_map {
// ...
}
或者,如果您不需要密钥:
for _, value := range json_map {
// ...
}
如果是一片地图,你可能需要嵌套两个循环:
for i := range json_map {
for _, ip := range json_map[i]["ipv4s"] {
// ...
}
}