我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JSON 数组作为 Go 结构

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JSON 数组作为 Go 结构

php小编鱼仔为您介绍JSON数组作为Go结构的使用方法。在Go语言中,JSON数组是一种常见的数据结构,它可以用来表示多个相同类型的数据。通过将JSON数组映射为Go的结构体,我们可以方便地对其进行操作和处理。本文将详细介绍如何使用Go语言中的JSON包来解析和构建JSON数组,并将其转换为相应的Go结构体,以实现数据的有效管理和处理。无论您是Go语言初学者还是有一定经验的开发者,本文都将为您带来实用的技巧和方法,帮助您更好地理解和应用JSON数组作为Go结构的相关知识。

问题内容

我试图从 json 文件调用对象数组,但总是遇到错误:“无法将数组解组为 config.appconfig 类型的 go 值”。 如何确保我的 go 结构如何调用 json 文件中的对象数组? 以下是我设置 go 结构的配置文件和 json 文件:

config.go

package config

import (
 "encoding/json"
 "io/ioutil"
)

type easy struct {
 uid string `json:"uid"`
}

type auth struct {
 code string `json:"code"`
}

type appconfig struct {
 openapimode string `json:"openapimode"` 
 openapiurl  string `json:"openapiurl"`  

 clientid string `json:"clientid"` 
 secret   string `json:"secret"` 

 authmode string `json:"authmode"`

 easy easy `json:"easy"`
 auth auth `json:"auth"`

 deviceid string `json:"deviceid"`

 uid          string `json:"-"` 
 mqttuid      string `json:"-"` 
 accesstoken  string `json:"-"`
 refreshtoken string `json:"-"`
 expiretime   int64  `json:"-"`
}

var app = appconfig{
  openapimode: "mqtt",
  openapiurl:  "openapi.tuyacn.com",
}


func loadconfig() error {
  return parsejson("webrtc.json", &app)
}

func parsejson(path string, v interface{}) error {
  data, err := ioutil.readfile(path)
  if err != nil {
    return err
}

 err = json.unmarshal(data, v)
 return err
}

json 文件

[
  {
    "openAPIMode": "mqtt",
    "openAPIUrl": "openapi.tuyaus.com",
    "clientId": "*****",
    "secret": "**************",
    "authMode": "easy",
    "easy": {
      "uId": "**********"
    },
    "auth": {
      "code": ""
    },
    "deviceId": "***********"
  },
  {
    "openAPIMode": "mqtt",
    "openAPIUrl": "openapi.tuyaus.com",
    "clientId": "*****",
    "secret": "**************",
    "authMode": "easy",
    "easy": {
      "uId": "**********"
    },
    "auth": {
      "code": ""
    },
    "deviceId": "***********"
  }
]

预先感谢您的帮助!

解决方法

您的配置 json 文件是一个 json 数组,您正在将其解析为结构,您需要将其解析为结构数组。

要修复您的代码,请将 app 的初始化更改为此。

var app []appconfig

func loadconfig() error {
    return parsejson("webrtc.json", &app)
}

这是完整的示例代码。

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
)

type Easy struct {
    UID string `json:"uId"`
}

type Auth struct {
    Code string `json:"code"`
}

type APPConfig struct {
    OpenAPIMode string `json:"openAPIMode"`
    OpenAPIURL  string `json:"openAPIUrl"`

    ClientID string `json:"clientId"`
    Secret   string `json:"secret"`

    AuthMode string `json:"authMode"`

    Easy Easy `json:"easy"`
    Auth Auth `json:"auth"`

    DeviceID string `json:"deviceId"`

    UID          string `json:"-"`
    MQTTUID      string `json:"-"`
    AccessToken  string `json:"-"`
    RefreshToken string `json:"-"`
    ExpireTime   int64  `json:"-"`
}

var App []APPConfig

func LoadConfig() error {
    return parseJSON("webrtc.json", &App)
}

func parseJSON(path string, v interface{}) error {
    data, err := ioutil.ReadFile(path)
    if err != nil {
        return err
    }

    err = json.Unmarshal(data, v)
    return err
}

func main() {
    err := LoadConfig()
    if err != nil {
        panic(err)
    }
    fmt.Printf("%+v\n", App)
}

以上就是JSON 数组作为 Go 结构的详细内容,更多请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JSON 数组作为 Go 结构

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JSON 数组作为 Go 结构

php小编鱼仔为您介绍JSON数组作为Go结构的使用方法。在Go语言中,JSON数组是一种常见的数据结构,它可以用来表示多个相同类型的数据。通过将JSON数组映射为Go的结构体,我们可以方便地对其进行操作和处理。本文将详细介绍如何使用Go语
JSON 数组作为 Go 结构
2024-02-10

go结构体嵌套的切片数组操作

看代码吧~package main import ("fmt" ) type XCDataStu struct {Id int `json:"id" xorm:"id"`Name string `json:"name" xo
2022-06-07

奇异的行为:在Go中解组为结构

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面编程网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《奇异的行为:在Go中解组为结构》,涉及到,有需要的可以收藏一下问题内容我正在
奇异的行为:在Go中解组为结构
2024-04-04

Go Lang 中的 JSON 结构到 csv

哈喽!今天心血来潮给大家带来了《Go Lang 中的 JSON 结构到 csv》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!问题内容
Go Lang 中的 JSON 结构到 csv
2024-04-05

如何将结构体切片编组为有效的 JSON

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《如何将结构体切片编组为有效的 JSON》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论
如何将结构体切片编组为有效的 JSON
2024-04-05

go json转结构体怎么实现

要将JSON转换为结构体,可以使用encoding/json包提供的Unmarshal函数。以下是一个简单的示例:package mainimport ("encoding/json""fmt")type Person struct {
go json转结构体怎么实现
2024-02-29

我如何解组 JSON 数据并将其存储在 Go 中的结构中

php小编草莓分享一种解组JSON数据并将其存储在Go语言结构中的方法。JSON是一种常用的数据交换格式,Go语言提供了方便的解析和处理JSON数据的工具包。通过使用Go语言内置的"json"包,我们可以轻松地将JSON数据解组成相应的结构
我如何解组 JSON 数据并将其存储在 Go 中的结构中
2024-02-11

如何最好地将 JSON 数据规范化为 Go 中的 API 结构体

php小编西瓜在这里带来了一篇关于如何将JSON数据规范化为Go中的API结构体的精简指南。在现代Web应用程序中,与JSON数据打交道是常见的任务。Go语言作为一门强大的后端语言,提供了一种简洁而灵活的方式来处理JSON数据。本文将介绍如
如何最好地将 JSON 数据规范化为 Go 中的 API 结构体
2024-02-13

Go Lang 中继承的结构体数组

Go Lang 是一种现代化的编程语言,它以其简洁高效的特点在编程界迅速崭露头角。在 Go Lang 中,结构体(Struct)是一种常见的数据类型,它可以用来组织和存储一组相关的数据。然而,在某些情况下,我们可能需要定义一个包含多个结构体
Go Lang 中继承的结构体数组
2024-02-09

将 AWS redshiftdataapiservice.GetStatementResultOutput 转换为 JSON 或结构

问题内容我有一个 AWS Redshift Serverless 数据库,我正在通过 AWS Go SDK 的 redshiftdataapiservice 查询该数据库。查询和所有这些都有效,但记录以难以使用/理解的格式返回。我的代码
将 AWS redshiftdataapiservice.GetStatementResultOutput 转换为 JSON 或结构
2024-02-06

解码/解组复杂的嵌套 JSON 数据结构

php小编草莓向大家介绍一种强大的技巧,即解码/解组复杂的嵌套 JSON 数据结构。在现代的网络应用中,JSON 数据结构被广泛使用,但是当数据结构变得复杂时,解析和提取所需信息会变得困难。本文将分享一些实用的技巧和方法,帮助大家轻松应对这
解码/解组复杂的嵌套 JSON 数据结构
2024-02-10

在 Go 中解组 sql.NullTime 结构

php小编小新在Go语言中,我们经常会使用sql.NullTime结构来处理数据库中的时间字段。NullTime结构可以表示一个可空的时间值,非常适用于处理数据库中的空值。在本文中,我们将介绍如何解组sql.NullTime结构,以及如何正
在 Go 中解组 sql.NullTime 结构
2024-02-09

go语言数据结构分为哪几类

这篇文章主要介绍“go语言数据结构分为哪几类”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言数据结构分为哪几类”文章能帮助大家解决问题。go语言数据结构有四大类:1、基础类型,包括整型(有符号
2023-07-04

从 Go 结构动态添加元素到 JSON

问题内容我想要得到的输出格式为:{"data": [ [ 0, [ "brendan", "fraser" ] ] , [ 1, [ "keanu", "reeves" ] ] ] }为此,我定义了以下结构:type actors
从 Go 结构动态添加元素到 JSON
2024-02-06

PHP数组怎么转换为JSON数组

本篇内容介绍了“PHP数组怎么转换为JSON数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PHP数组在PHP中,数组可以用来存储多个数据
2023-07-05

在 Go Lang 中处理嵌套非结构化 JSON

在Go Lang中处理嵌套非结构化JSON是一项关键任务。JSON(JavaScript Object Notation)是一种常用的数据交换格式,但当JSON数据嵌套复杂时,处理起来可能会变得困难。php小编鱼仔将为您介绍一些在Go La
在 Go Lang 中处理嵌套非结构化 JSON
2024-02-11

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录