相关疑难解决方法(0)

在Golang中为JSON字段而不是空字符串分配null

由于空字符串是Golang的零/默认值,因此string我决定将所有这些字段定义为interface{}相反.例如

type student struct {
    FirstName  interface{} `json:"first_name"`
    MiddleName interface{} `json:"middle_name"`
    LastName   interface{} `json:"last_name"`
}
Run Code Online (Sandbox Code Playgroud)

如果该特定字段的值不可用,则我发送数据的应用程序需要null而不是空字符串.

这是正确的方法还是有人可以指点我比这更好的东西.

go

33
推荐指数
5
解决办法
3万
查看次数

您如何编组 sql.NullString 以便将输出展平以仅给出 go 中的值?

给定一个 go 结构

type Company struct {
    ID   int             `json:"id"`              
    Abn  sql.NullString  `json:"abn,string"`
}
Run Code Online (Sandbox Code Playgroud)

当用这样的东西编组时

company := &Company{}
company.ID = 68
company.Abn = "SomeABN"
result, err := json.Marshal(company)
Run Code Online (Sandbox Code Playgroud)

结果是

{
    "id": "68",
    "abn": {
        "String": "SomeABN",
        "Valid": true
    }
}
Run Code Online (Sandbox Code Playgroud)

想要的结果是

{
    "id": "68",
    "abn": "SomeABN"
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试明确说明 Abn 是一个字符串。

Abn  sql.NullString  `json:"abn,string"`
Run Code Online (Sandbox Code Playgroud)

这并没有改变结果。

您如何编组 sql.NullString 以便将输出展平以仅给出 go 中的值?

编辑

在阅读了/sf/users/577955451/和/sf/users/67613031/的答案后,我得到了类似的结果

package main

import (
    "database/sql"
    "encoding/json"
    "reflect"
    //"github.com/lib/pq"
)

/*
    https://medium.com/aubergine-solutions/how-i-handled-null-possible-values-from-database-rows-in-golang-521fb0ee267
*/

type NullString sql.NullString …
Run Code Online (Sandbox Code Playgroud)

json marshalling go

12
推荐指数
2
解决办法
6337
查看次数

标签 统计

go ×2

json ×1

marshalling ×1