当前位置: 首页 > 面试题库 >

JSON字段设置为null vs字段不存在

杨甫
2023-03-14
问题内容

在golang中,有没有办法查看是否可以将解编入结构的json字段与设置为null的json字段区分开?因为两者都将struct中的值设置为nil,但是我需要知道字段是否以该字段开头,并查看是否有人将其设置为null。

{
  "somefield1":"somevalue1",
  "somefield2":null
}

VS

{
  "somefield1":"somevalue1",
}

当解组为结构时,两个json均为零。任何有用的资源将不胜感激!


问题答案:

使用json.RawMessage以“拖延”解组过程决定做某件事之前要确定原始字节:

var data = []byte(`{
        "somefield1":"somevalue1",
        "somefield2": null
}`)

type Data struct {
    SomeField1 string          
    SomeField2 json.RawMessage
}

func main() {
    d := &Data{}

    _ = json.Unmarshal(data, &d)

    fmt.Println(d.SomeField1)

    if len(d.SomeField2) > 0 {
        if string(d.SomeField2) == "null" {
            fmt.Println("somefield2 is there but null")
        } else {
            fmt.Println("somefield2 is there and not null")
            // Do something with the data
        }
    } else {
        fmt.Println("somefield2 doesn't exist")
    }
}

参观游乐场https://play.golang.org/p/Wganpf4sbO



 类似资料:
  • 本章内容为V5.1.4+版本开始支持,可以更为方便的操作模型的JSON数据字段。 这里指的JSON数据包括JSON类型以及JSON格式(但并不是JSON类型字段)的数据 我们修改下User模型类 <?php namespace app\index\model; use think\Model; class User extends Model { // 设置json类型字段 pr

  • JSON字段 从V5.1.4+版本开始,强化了JSON字段的操作支持。 如果你的user表有一个info字段是JSON类型的(或者说你存储的是JSON格式,但并非是要JSON字段类型),你可以使用下面的方式操作数据。 JSON数据写入 $user['name'] = 'thinkphp'; $user['info'] = [ 'email' => 'thinkphp@qq.com',

  • 问题内容: 我正在运行Jersey REST服务。代表我的资源的POJO是带有JAXB(XML)注释的简单Java类(它们是从模式定义生成的-因此具有注释)。 我希望Jersey / Jackson忽略XML注释。我确实在我的web.xml这个配置(如提到这里): 我现在希望@XMLElement批注不再用于JSON字段命名策略。 但是看这个java领域(成员) 我仍然得到以下JSON表示形式:

  • 问题内容: 通过使用,我们可以向Logstash添加新字段。 但是,在这里,我想知道如何为该特定领域设置分析仪。 例如:,我有一个新的id字段,其字段类似于,但Elasticsearch提供的常规分析器会将其分为和。因此,我无法将术语功能有效地应用于该特定领域并使之有用。 在这里,对于ID字段,我想应用我自己的自定义分析器,该分析器不标记值,而是应用小写过滤器。 如何在logstash中完成此操作

  • 问题内容: 用户声明: 模式声明: UserPatternDeclaration: 请求数据库: 我得到以下异常: 请帮助解决此问题。 错误消息看起来非常非常奇怪。 我已阅读相关主题的点击,但未找到答案。 ps hibernate日志(异常之前): 在浏览器中,我看到以下消息: 问题答案: 如果将HQL查询更改为会怎样? 我认为Hibernate混淆了对象和ID字段。

  • 问题内容: 我有一个用netbeans开发的应用程序,我想在显示面板时将焦点设置为一定。我已经阅读了许多文章,并尝试了各种方法,但没有奏效。主要问题之一是在哪里放置所需的代码,我认为在我的情况下是 有一些指示使用Window Listener的帖子,但是随着netbeans生成GUI,我无法看到如何实现接口,因为我无法编辑创建jPANEL等的代码。整个过程非常令人沮丧,我真的没有相信这应该很困难。