首页 > 其他分享 >golang json使用10、-10、0表示,true、false、null

golang json使用10、-10、0表示,true、false、null

时间:2022-08-28 22:27:41浏览次数:71  
标签:10 false golang json Boolean func return byte

package main

import (
    "encoding/json"
    "errors"
    "fmt"
)

type A struct {
    Br Boolean `json:"br"`
}

func main() {
    var c A
    e := json.Unmarshal([]byte(`{"br":true}`), &c)
    fmt.Println(e)
    fmt.Println(c)

}

type Boolean int

func (b Boolean) MarshalJSON() ([]byte, error) {
    switch b {
    case 10:
        return []byte("true"), nil
    case -10:
        return []byte("false"), nil
    default:
        return []byte("null"), nil
    }
}

func (b *Boolean) UnmarshalJSON(data []byte) error {
    switch string(data) {
    case "true":
        *b = 10
    case "false":
        *b = -10
    case "null":
        *b = 0
    default:
        return errors.New("不是正确类型")
    }
    return nil
}

func (b Boolean) IsNil() bool {
    return b == 0
}

func (b Boolean) IsValue() bool {
    return b == 10
}

 

标签:10,false,golang,json,Boolean,func,return,byte
From: https://www.cnblogs.com/hardykay/p/16633853.html

相关文章

  • 100套计算机专业java毕设项目
    100套java开学内卷项目论文源码随你挑今天分享100套计算机Java设计项目,可练手又可当毕设,而且包含了参考论文文档资料;有需要的可以翻翻看    源码获取百度网盘:......
  • 使用idea中的mysql可视化工具,出现[42000][1064] You have an error in your SQL synta
    今天使用idea中mysql的可视化工具进行开发,当我想要插入一行数据时,发现无法插入,产生如下错误。   [42000][1064]YouhaveanerrorinyourSQLsyntax;checkthe......
  • 10.日不落
    天空的雾来得漫不经心河水像油画一样安静和平鸽慵懒步伐押着韵心偷偷的放晴祈祷你像英勇的禁卫军动也不动的守护爱情你在回忆里留下的脚印是我爱的风景我要送你......
  • gym-103708D Different Pass a Ports
    DifferentPassaPorts矩阵快速幂模板图的邻接矩阵的\(k\)次幂就是从图上所有点走\(k\)步的方案数#include<iostream>#include<cstdio>usingnamespacestd;......
  • gym-103708F Froginald the frog
    Froginaldthefrog矩阵快速幂如果没有分隔的话,这就是一个矩阵快速幂求斐波那契的问题因为有分隔,因此考虑他们分成若干个块,每个块的方案数之积就是答案,显然分隔的长度如......
  • gym-103708B Building 5G antennas
    Building5Gantennasdfs剪枝要字典序最小,显然第一个点就是\(1\),后面考虑走\(k\)步后能到达的点集中选一个字典序最小的,重复该过程考虑\(set[i][j]\)表示第\(i\)......
  • 前端Day10
    视口(viewport):浏览器显示页面内容的屏幕区域。分为布局视口、视觉视口、理想视口。布局视口: 视觉视口: 理想视口: meta视口标签:width=device-width:布局视口宽......
  • 110.balanced-binary-tree 平衡二叉树
    获取左右子树的高度,如果左右子树高度差小于等于1,则判断左右子树的左右子树,如此递归下去。classSolution{public:intgetDp(TreeNode*root){if(root......
  • 周总结-10week
    目录周总结-10week前端简介超文本传输协议前戏HTTP超文本传输协议HTML简介head内常见标签body内基本标签块儿级标签与行内标签body内基本符号body内布局标签body内常见标签......
  • 6.10 列表元素的修改操作
     lst1=[10,20,30,40,10,60,70,80,90,100,1000]lst1[2]=2#修改其中一个元素print(lst1)lst1[3:6]=[1000,2000,3000.4000]#修改其中多......