在Go中,我将JSON解组/解码为一个具有int类型ID字段的结构。然后,我尝试将此结构插入到PostgreSQL数据库中,使用具有ID列的go-pg作为主键(它具有非空约束)。第一个条目有一个0作为它的ID。在Postgres文档中,它声明0作为主键的值是ok的。但是,我一直收到一条错误消息:
列"number“中的错误#23502 null值违反了null约束。
看起来,当将0解组为int值时,它将变成一个Go“零值”。然后将其作为null值插入Postgres。任何关于我如何避免这种情况的建议都将不胜感激。
type Account struct {
Number
我有以下JSON
{"a":1, "b":2, "?":1, "??":1}
我知道它有"a“和"b”字段,但我不知道其他字段的名称。所以我想用下面的类型对它进行解组:
type Foo struct {
// Known fields
A int `json:"a"`
B int `json:"b"`
// Unknown fields
X map[string]interface{} `json:???` // Rest of the fields shoul
我搜索了一些类似的帖子,但Go JSON解组是一个热门话题,在所有其他帖子中,我看不到任何针对我的问题的具体内容。
有没有办法为现有类型添加/注册JSON反编组逻辑--由外部库定义的类型?
示例:
import (
"go.mongodb.org/mongo-driver/bson/primitive"
)
type SomeDBModel struct {
Created primitive.DateTime
}
# NOTE: primitive.DateTime is an int64 and has implemented MarshalJSON,
我有一个这样的结构:
type Data struct {
Id string
Value string
Custom customtype1
Special customtype2
TimeStamp Time
}
var model Data
我正在从一个JSON对象读取数据。因为JSON的结构非常不同,所以我不能直接将JSON解组到结构中。因此,我尝试将JSON对象中的字段与结构中的字段逐个“匹配”。我实际上不需要正确地将JSON数据解组到结构中,我真正需要的是能够为每个字段的值分配适当的
我正在尝试同时将多个不同JSON响应中的字段解组和剥离到适当的Go结构中。为此,我创建了一个Wrappable接口,它定义了Unwrap方法(剥离适当的字段),并将该接口传递给解组和解包的代码。它看起来像下面的示例(也在中):
package main
import (
"encoding/json"
"fmt"
)
type Data struct {
A string `json:"a"`
B string `json:"b"`
}
type DataWrapper struct {
我注意到,当我在Go服务器的上下文中执行JSON解组时,即使对于小对象,也要花费30,000+纳秒时间。这对我来说似乎很大,所以我运行了一些独立的基准,令人惊讶的是,每个解组的平均时间是500 nanos。为了更深入地研究这一点,我编写了一个程序,它只在同一个小对象上执行一系列的解组操作,这表明第一个解编组是缓慢的,而后续的解组则要快得多:
package main
import (
"time"
"fmt"
"encoding/json"
)
var b []byte
type Dog struct {
A
我正在尝试将JSON解组到一个结构中。但是,该结构有一个带有标记的字段。使用反射,并尝试查看标记中是否包含字符串"json“。如果是这样,那么要解组的json应该简单地作为字符串解组到字段中。
示例:
const data = `{"I":3, "S":{"phone": {"sales": "2223334444"}}}`
type A struct {
I int64
S string `sql:"type:json"`
}
问题很简单--将json中的"S“作为
我一直试图解析来自PubNub的JSON消息,但没有任何结果:
type PubNubMessage struct {
body []string
}
[[{"text":"hey"}],"1231212412423235","channelName"]
json: cannot unmarshal array into Go value of type main.PubNubMessage
有没有人知道如何在高丽中解码这些复杂的类型呢?
我有一个带有一些字段的简单json消息,并希望使用spring-web将其映射到java对象。
问题:我的目标类字段的名称与int json响应的名称不同。我怎么才能将它们映射到对象,而不需要在java中重命名字段呢?
有什么注解可以放在这里吗?
{
"message":"ok"
}
public class JsonEntity {
//how to map the "message" json to this property?
private String value;
}
RestTemplate rest = n
假设我有一个像这样的结构
type A struct{
name string`json:"name"`
}
然后在main中我有代码
var jsonString string = `{"status":false}`
var a A
error := json.Unmarshal([]byte(jsonString),&a)
显然,无论json格式如何,上面的代码都不会产生任何错误。json.Unmarshal()什么时候会在Go中返回错误?
在成功提交用户详细信息时,我从客户端获得了一个JSON。
JSON中的一些元素可以跳过,因为它们没有更新。
在Go服务器端,我定义了一个等价的struct。
服务器成功地将JSON字节编组到结构中。
type user struct {
Id *int64 `json:",omitempty"`
Name *string `json:",omitempty"`
Age *int64 `json:",omitempty"`
}
但对于未从客户端接收到的字段,默认情况下对字符串解组硬编码为ni
我想在Go中解析一个JSON对象,但又想为未给出的字段指定默认值。例如,我有一个struct类型:
type Test struct {
A string
B string
C string
}
A、B和C的默认值分别为"a“、"b”和"c“。这意味着当我解析json时:
{"A": "1", "C": 3}
我想要获取结构:
Test{A: "1", B: "b", C: "3"}
使用内置的encoding/json包可以做到这点吗?否则,有没有G
我想要解组
var j = []byte(`[{"major":1},{"minor":0}]`)
转到
type Version struct {
Major int `json:"major"`
Minor int `json:"minor"`
}
通过循环内部切片使用自定义解组程序:
func (h *Version) UnmarshalJSON(b []byte) error {
var wrapper []json.RawMessage
err := json.Unmarshal(b,
我想做的是评论:
type foo struct {
Message string `json:"message"`
}
func bar() {
//The "message" field contains a bool type which does not
//match the equivalent "message" field in foo, a string type
jsonData := byte[]("{
\"message\": true
}")
var b
我在Go中解组一些JSON时遇到了问题。在下面的代码中,我希望能够从JSON (<- main目标/问题)中提取"c“("Apple","Berry")的值。让我特别困惑的是,当我试图索引到v数组(?)时,我得到了错误:invalid operation: v[0] (type interface {} does not support indexing)。
这就是我使用接口并查看变量类型的原因,正如您在下面看到的,它是“[] reflect {}",即使我断言它是"interface {}”。值得注意的是,如果我将行q := in