在Golang中对地图输出进行排序和过滤-Okta API

我正在通过go sdk与Okta API进行交互。我是golang的新手,能够取回数据,但是我不确定该如何处理。

func main() {
    client,_ := okta.NewClient(context.Background(),okta.WithOrgUrl({URL}),okta.WithToken({TOKEN}))
    filter := query.NewQueryParams(query.WithFilter("status eq \"actIVE\""))
    users,resp,err := client.User.ListUsers(filter)
    fmt.Println(resp,err)
    for _,user := range users {
        fmt.Println(user.Profile)
    }
}

返回:已编辑的PII **

&{0xc000106480} <nil>
&map[email:{email} firstName:{FN} lastName:{LN} login:{login} mobilePhone:<nil> secondEmail:<nil> sshusername:{ssh}
next user
next user
so on
so on

我的问题是如何将输出仅过滤到某些字段并进行一些排序或过滤。我有点期望输出结果是JSON。

zhizihuang 回答:在Golang中对地图输出进行排序和过滤-Okta API

如果您想从json输出中隐藏一些结构字段,请遵循以下规则:

type User struct {
  ID int `json:"id"`
  Username string `json:"username"`
  MobilePhone string `json:"-"`
}

您必须使用-字符来隐藏结构字段。我建议您阅读有关Golang标签的信息。 https://medium.com/golangspec/tags-in-golang-3e5db0b8ef3e

,

您需要将响应对象编组到一个 json 对象中,您可以漂亮地打印出一个字符串表示形式。试试这个:

import (
    "context"
    "encoding/json"
    "fmt"
    "log"
    "github.com/okta/okta-sdk-golang/v2/okta"
    "github.com/okta/okta-sdk-golang/v2/okta/query"
)

var b []byte
var err error
filter := query.NewQueryParams(query.WithFilter("status eq \"ACTIVE\""))
ctx,client,err := okta.NewClient(context.Background(),okta.WithOrgUrl({URL}),okta.WithToken({TOKEN}))
users,resp,err := client.User.ListUsers(ctx,filter)
if err != nil {
    log.Println(err.Error())
} else {
    log.Println(resp.Status)
    if users != nil {
        b,err = json.MarshalIndent(users,""," ")
        if err != nil {
            panic(err)
        }
    }
    fmt.Println(string(b))
}
本文链接:https://www.f2er.com/2625246.html

大家都在问