美文网首页
Json RawMessage

Json RawMessage

作者: kker | 来源:发表于2016-12-19 18:42 被阅读2450次

在程序中使用Json时,有时某个字段其结构是根据其他字段(比如有个类型含义的字段)决定的,这个时候在解析时,需要先解析一部分,进行判断后,再解析出合适的Json结构。这时就需要用到Golang Json包的RawMessage这个对象。

示例代码如下:

package main

import (
    "encoding/json"
)

type UpLoadSomething struct {
    Type   string
    Object interface{}
}

type File struct {
    FileName string
}

type Png struct {
    Wide  int
    Hight int
}

func main() {

    input := `
    {
        "type": "File",
        "object": {
            "filename": "for test"
        }
    }
    `
    var object json.RawMessage
    ss := UpLoadSomething{
        Object: &object,
    }
    if err := json.Unmarshal([]byte(input), &ss); err != nil {
        panic(err)
    }
    switch ss.Type {
    case "File":
        var f File
        if err := json.Unmarshal(object, &f); err != nil {
            panic(err)
        }
        println(f.FileName)
    case "Png":
        var p Png
        if err := json.Unmarshal(object, &p); err != nil {
            panic(err)
        }
        println(p.Wide)
    }
}

相关文章

  • Json RawMessage

    在程序中使用Json时,有时某个字段其结构是根据其他字段(比如有个类型含义的字段)决定的,这个时候在解析时,需要先...

  • GoLang----Json RawMessage使用

    在程序中使用Json时,有时某个字段其结构是根据其他字段(比如有个类型含义的字段)决定的,这个时候在解析时,需要先...

  • 微信小程序 wx:if wx:elif wx:else 多条件判

    wxml js json 显示: json 显示: json 显示: json json

  • json模块与jsonpath模块

    一、json模块 json.dumps() json.dump() json.loads() json.load(...

  • JSON数据交互

    一 JSON简介 JSON简介 二 json数据交互 (1)请求json,输出json, 需要请求数据为json,...

  • Json学习总结

    目录 什么是 Json? 为什么使用Json? Json语法规则 Json值 Json使用 Json 使用范围 J...

  • json loads和dumps

    JSON 函数 使用 JSON 函数需要导入 json 库:import json。 json.dumps将 Py...

  • Jackson 使用

    JSON --》 Java Java --》 JSON JSON 注解

  • 2018-08-27 josn学习

    JSON http://www.json.org/json-zh.html JSON(JavaScript ...

  • JSON

    Menu JSON定义 JSON方法 JSON定义 JSON(JavaScript Object Notation...

网友评论

      本文标题:Json RawMessage

      本文链接:https://www.haomeiwen.com/subject/bpitvttx.html