分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

golang 解码未知键的 json 字符串

发布时间:2023-09-06 02:00责任编辑:赖小花关键词:jsjson

我们可以使用 interface 接收 json.Unmarshal 的结果,然后利用 type assertion 特性来进行后续操作。

package mainimport ("encoding/json""fmt")func main() {b := []byte(`{"Name":"Wednesday","Age":6,"Parents":["Gomez","Morticia"]}`)var f interface{}json.Unmarshal(b, &f)m := f.(map[string]interface{})fmt.Println(m["Parents"]) ?// 读取 json 内容 fmt.Println(m["a"] == nil) // 判断键是否存在}

  

这个 type assertion 的作用是类似于 java 中的 Object 对象转换成某种具体的对象,好比如下面的例子:

import java.util.ArrayList;public class Main { ???public static void main(String[] args) { ???????ArrayList arrayList = new ArrayList<Integer>(); ???????ArrayList arrayList1 = ?(ArrayList) (new Test<>()).test(arrayList); ???????arrayList1.add(1); ???????System.out.println(arrayList1); ???}}class Test<T> { ???public T test(T t) { ???????return t; ???}}

  上面的  ArrayList arrayList1 = (ArrayList) (new Test<>()).test(arrayList);  这一行,我们明确的知道函数返回值是 ArrayList 类型,所以我们可以加上 (ArrayList) 进行类型转换。

而 golang 中只是写法不一样而已,golang 的写法是 v.(xxx),作用是把 interface{} 类型的变量当作 xxx 类型使用。

 

golang 解码未知键的 json 字符串

原文地址:https://www.cnblogs.com/eleven24/p/9192884.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved