You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Roblox Groups API的HTTP请求响应中提取指定Id值?

如何在Go中解析Roblox群组API的JSON响应获取Id值

当然可行!在Go里解析这类JSON响应获取指定字段非常简单,有两种常用的实现方式,我给你一步步演示:

方法一:定义结构体解析(推荐,类型安全)

这种方式适合你需要多次使用响应中多个字段的场景,类型安全且代码可读性高。

首先,根据Roblox API返回的JSON结构,定义对应的Go结构体:

type Group struct {
    Id          int64          `json:"Id"`
    Name        string         `json:"Name"`
    Owner       GroupOwner     `json:"Owner"`
    EmblemUrl   string         `json:"EmblemUrl"`
    Description string         `json:"Description"`
    Roles       []GroupRole    `json:"Roles"`
}

type GroupOwner struct {
    Name string `json:"Name"`
    Id   int64  `json:"Id"`
}

type GroupRole struct {
    Name string `json:"Name"`
    Rank int    `json:"Rank"`
}

然后修改你的代码,完成解析并提取Id值:

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

// 上面定义的结构体放在这里

func main() {
    // 修正URL里的多余斜杠
    url := "https://groups.roblox.com/v1/groups/7585110"
    resp, err := http.Get(url)
    if err != nil {
        fmt.Printf("请求API失败:%v\n", err)
        return
    }
    // 一定要记得关闭响应体,避免资源泄漏
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Printf("读取响应体失败:%v\n", err)
        return
    }

    var group Group
    // 将JSON字符串解析到结构体中
    err = json.Unmarshal(body, &group)
    if err != nil {
        fmt.Printf("解析JSON失败:%v\n", err)
        return
    }

    // 现在你可以直接获取Id值了
    id := group.Id
    fmt.Printf("群组Id:%d\n", id) // 输出:7585110
}

方法二:使用map[string]interface{}解析(灵活,无需定义结构体)

如果你只需要获取Id这一个字段,也可以直接用map来解析,省去定义结构体的步骤:

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    url := "https://groups.roblox.com/v1/groups/7585110"
    resp, err := http.Get(url)
    if err != nil {
        fmt.Printf("请求API失败:%v\n", err)
        return
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Printf("读取响应体失败:%v\n", err)
        return
    }

    var result map[string]interface{}
    err = json.Unmarshal(body, &result)
    if err != nil {
        fmt.Printf("解析JSON失败:%v\n", err)
        return
    }

    // 通过键名获取值,并断言为float64(因为JSON里的数字默认解析为float64)
    idFloat, ok := result["Id"].(float64)
    if !ok {
        fmt.Println("无法获取Id值或类型转换失败")
        return
    }
    // 转换为int64类型(Roblox的Id是整数)
    id := int64(idFloat)
    fmt.Printf("群组Id:%d\n", id) // 输出:7585110
}

注意事项

  • 一定要修正你原来URL里的多余斜杠(v1//groups改成v1/groups),否则会导致请求错误
  • 处理HTTP响应后必须调用defer resp.Body.Close(),避免资源泄漏
  • 使用map解析时,JSON中的数字会被解析为float64,需要手动转换为int64才能得到正确的整数Id

内容的提问来源于stack exchange,提问作者Kaitholen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 08:29:07