相关疑难解决方法(0)

Go中的自定义JSON映射功能

因此,我正在制作一个Go服务,该服务调用了一个宁静的API,但我无法控制正在调用的API。

我知道Go在NewDecoder-> Decode中有一个不错的内置反序列化器,但是它仅适用于以大写字母开头的结构域(又称公共域)。这引起了一个问题,因为我要使用的JSON看起来像这样:

{
    "_next": "someValue",
    "data":  [{/*a collection of objects*/}],
    "message": "success"
}
Run Code Online (Sandbox Code Playgroud)

我将如何映射"_next"?

json go unmarshalling

2
推荐指数
1
解决办法
196
查看次数

在Golang做json unmarshal的空领域

我写了这段代码.当我运行它时,我无法弄清楚为什么它会给空字段.我试过大写变量.仍然无法正常工作.

package main

import (
        "encoding/json"
        "fmt"
)

type FirstName struct {
        Name1 string
}
type SecondName struct {
        Name2 string
}
type Person struct {
        Details     FirstName
        MoreDetails SecondName
}

func main() {
        var someGuy Person
        var data = []byte(`{"details": {"firstName": "alan"}, "moreDetails": {"surName": "Turing"}}`)
        json.Unmarshal(data, &someGuy)
        fmt.Println(someGuy)
}
Run Code Online (Sandbox Code Playgroud)

json struct go unmarshalling

2
推荐指数
1
解决办法
369
查看次数

有没有办法处理 Golang 中带有空格的 Google 数据存储类型属性名称?

我遇到了数据存储的严重问题,似乎没有任何解决方法。

我正在使用 Google Appengine 数据存储包将投影查询结果拉回到 Appengine 内存中进行操作,这是通过将每个实体表示为结构来完成的,每个结构字段对应于一个属性名称,如下所示:

type Row struct {
Prop1    string
Prop2    int
}
Run Code Online (Sandbox Code Playgroud)

这非常有效,但我已将查询扩展为读取其他包含空格的属性名称。虽然查询运行良好,但它无法将数据拉回结构中,因为它希望将给定值放入具有相同命名约定的结构中,并且我收到此类错误:

datastore: cannot load field "Viewed Registration Page" into a "main.Row": no such struct field
Run Code Online (Sandbox Code Playgroud)

显然Golang无法表示这样的结构体字段。有一个相关类型的字段,但没有明显的方法告诉查询将其放置在那里。

这里最好的解决方案是什么?

干杯

google-app-engine struct go data-structures google-cloud-datastore

1
推荐指数
1
解决办法
1253
查看次数

无法使用具有空格的键名解组JSON

我得到的一些JSON数据在键名中有空格.我正在使用标准encoding/json库来解组数据.但是,它无法理解模式中带空格的键.例如以下代码:

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    var jsonBlob = []byte(`[
        {"Na me": "Platypus", "Order": "Monotremata"},
        {"Na me": "Quoll",    "Order": "Dasyuromorphia"}
    ]`)
    type Animal struct {
        Name  string `json: "Na me"`
        Order string `json: "Order,omitempty"`
    }
    var animals []Animal
    err := json.Unmarshal(jsonBlob, &animals)
    if err != nil {
        fmt.Println("error:", err)
    }
    fmt.Printf("%+v", animals)
}
Run Code Online (Sandbox Code Playgroud)

输出为:

[{Name: Order:Monotremata} {Name: Order:Dasyuromorphia}]
Run Code Online (Sandbox Code Playgroud)

所以在模式中,库移除了空间(来自Na me)并尝试找到键(Name),这显然不存在.有什么建议我可以在这做什么?

json struct go

1
推荐指数
1
解决办法
1102
查看次数

在运行时以编程方式创建结构-可能吗?

Go中可以通过编程方式创建结构类型(即不在编译的源代码中)吗?

我们有一个特殊的用例,其中将通过用户定义的元数据创建类型(因此事先不知道模式/类型),并且每个客户都会有所不同。然后,我们需要为这些服务自动生成REST服务,并将其保留在NoSQL后端中。我们还需要为每个字段定义不同的动态验证器(例如,必填项,正则表达式,最大/最小大小,最大/最小值,对另一个类型实例的引用等)。

我想知道在Go中是否可以进行类似的操作?

编辑1:

例如

从JSON中的前端

For customer 1:
{
"id":1,
"patientid":1,
"name":"test1",
"height":"160",
"weight":"70",
"temp":"98"
}

For customer 2:
{
"id":2,
"patientid":1,
"name":"test1",
"height":"160",
"weight":"70"
}

For customer 3

may be different new fields will add
Run Code Online (Sandbox Code Playgroud)

后端

// For One customer need to have these fields 

type Vitalsigns struct {
    ID                int64  `datastore:"-"`
    PatientID         int64  `json:"patientid,omitempty"`
    Name              string `json:"name,omitempty"`
    Height            string `json:"height,omitempty"`
    Weight            string `json:"weight,omitempty"`
    Temp              string `json:"temp,omitempty"`
}



// Another need to have these fields

type Vitalsigns struct …
Run Code Online (Sandbox Code Playgroud)

reflection struct types go

1
推荐指数
1
解决办法
112
查看次数

在golang中,"某事"是什么意思

我有这个XML阅读器结构:

type Recurlyservers struct {
    XMLName     xml.Name `xml:"servers"`
    Version     string   `xml: "version,attr"`
    Svs         []server `xml: "server"`
    Description string   `xml:",innerxml"`
}
Run Code Online (Sandbox Code Playgroud)

这样做有什么意思xml:"servers"或xml: "version,attr"?我不知道这是什么.我想在谷歌搜索,但我不知道它的名字.它是什么?如果没有这个,我可以使用标准结构吗?因为没有这个,XML读取不起作用.

go

0
推荐指数
1
解决办法
222
查看次数

什么是结构中的"有效"标签

type MyRequest struct {
    email         string `json:"email" valid:"email,required"`
}
Run Code Online (Sandbox Code Playgroud)

json用于(un)编组JSON结构,但是valid用于什么?

go

0
推荐指数
1
解决办法
94
查看次数

将json字符串解组为具有struct本身的一个元素的结构

我是初学者并试图解组以下json字符串

[{
    "db": {
        "url": "mongodb://localhost",
        "port": "27000",
        "uname": "",
        "pass": "",
        "authdb": "",
        "replicas": [
            {
                "rs01": {
                    "url":"mongodb://localhost",
                    "port": "27001",
                    "uname": "",
                    "pass": "",
                    "authdb": ""
                }
            },
            {
                "rs02": {
                    "url":"mongodb://localhost",
                    "port": "27002",
                    "uname": "",
                    "pass": "",
                    "authdb": ""
                }
            }
        ]
    }
}]
Run Code Online (Sandbox Code Playgroud)

这是结构

type DBS struct {
    URL      string `json:url`
    Port     string `json:port`
    Uname    string `json:uname`
    Pass     string `json:pass`
    Authdb   string `json:authdb`
    Replicas []DBS   `json:replicas`
}
Run Code Online (Sandbox Code Playgroud)

这是功能

func loadConfigs() []DBS {
    var config []DBS
    raw, …
Run Code Online (Sandbox Code Playgroud)

json struct go

0
推荐指数
1
解决办法
439
查看次数

Go struct tag 抛出错误:“field tag must be a string”

我是第一次使用 GO 并且正在设置一个小示例 API。在尝试从我创建的结构返回 JSON 对象时,当我向字段添加结构标记时出现此错误:

“字段标记必须是字符串”和“无效字符文字(多个字符)”。

这是我的代码分解。我在这里缺少什么?

    package main

import (
    "encoding/json"
    "fmt"
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {
    router := mux.NewRouter()
    router.HandleFunc("/demo/v1/version", getVersion).Methods("GET")    
    log.Fatal(http.ListenAndServe(":8080", router))    
}


func getVersion(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    w.WriteHeader(http.StatusOK)
    version := Version{ID: "demo", Version: "1.0.0", Sha: "some hash...."}
    var myJSON, err = json.Marshal(version)

    json.NewEncoder(w).Encode(myJSON)

}

type Version struct {
    //ERRORS on these 3 lines:
    ID      string 'json:"id"'
    Version string 'json:"version, omitempty"'
    Sha     string 'json:"sha"'
}
Run Code Online (Sandbox Code Playgroud)

go

0
推荐指数
1
解决办法
1806
查看次数