目录
问题内容
解决方法
首页 后端开发 Golang 使用自定义类型解析 golang 中的 JSON 数组

使用自定义类型解析 golang 中的 JSON 数组

Feb 09, 2024 am 10:39 AM
json数组

使用自定义类型解析 golang 中的 JSON 数组

php小编百草为你带来了一篇关于解析golang中的JSON数组的文章。在golang中,我们可以使用自定义类型来解析复杂的JSON数组。这种方法不仅能够更好地理解和处理JSON数据,还能提供更灵活的操作方式。本文将详细介绍如何使用自定义类型解析JSON数组,并给出一些实用的示例代码,帮助你更好地理解和运用这一技巧。无论你是初学者还是有一定经验的开发者,都能从本文中受益匪浅,快来一起探索吧!

问题内容

我正在尝试在 golang 中解析一个 json 数组,格式如下:

2牛肉840f8f9d8bb724c7736cb14989

例如,json 应该包含不同表的模式。 我已尝试以下代码,但架构返回空:

package main

import (
    "encoding/json"
    "io"
    "log"
    "os"
)

type ColumnType struct {
    Name  string `json:"name"`
    Type  string `json:"type"`
}

type Schema struct {
    Schema map[string][]ColumnType
}

func main() {

    mocksSchemas, _ := os.Open("parse_config/mock_schema.json")

    var schemas []Schema
    content, err := io.ReadAll(mocksSchemas)
    if err != nil {
        log.Fatal("Error when reading mock file: ", err)
    }
    err = json.Unmarshal(content, &schemas)
    if err != nil {
        log.Fatal("Error during Unmarshal(): ", err)
    }

    defer mocksSchemas.Close()
}
登录后复制

我做错了什么?如果您能指出我的错误,我将不胜感激 谢谢!

解决方法

要匹配源/目标 JSON,您可以使用以下类型:

type Schema map[string][]ColumnType
登录后复制

或者,您也可以使用更易于使用的东西:

type Schema struct {
    Table   string
    Columns []ColumnType
}

func (s Schema) MarshalJSON() ([]byte, error) {
    return json.Marshal(map[string][]ColumnType{
        s.Table: s.Columns,
    })
}

func (s *Schema) UnmarshalJSON(data []byte) error {
    var m map[string][]ColumnType
    if err := json.Unmarshal(data, &m); err != nil {
        return err
    }
    for k, v := range m {
        s.Table = k
        s.Columns = v
        break
    }
    return nil
}
登录后复制

以上是使用自定义类型解析 golang 中的 JSON 数组的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

详解Java中JSON数组的排序和过滤操作。 详解Java中JSON数组的排序和过滤操作。 Sep 06, 2023 pm 03:22 PM

详解Java中JSON数组的排序和过滤操作在Java开发中,处理JSON数据是一项常见的任务。JSON数组作为其中一种常用的数据结构,在实际应用中经常需要进行排序和过滤操作。本文将详细介绍Java中JSON数组的排序和过滤操作,并提供相应的代码示例。一、JSON数组的排序操作使用JSONArray对象存储JSON数组在Java中,使用json库处理JSON数

快速上手:Java中的JSON数组合并和拆分技巧。 快速上手:Java中的JSON数组合并和拆分技巧。 Sep 06, 2023 am 10:21 AM

快速上手:Java中的JSON数组合并和拆分技巧在现代的软件开发中,数据的格式和传输变得愈发重要。其中,JSON(JavaScriptObjectNotation)是一种常用的数据格式,特别适用于前后端交互和数据存储。在Java开发中,我们经常需要处理JSON对象和JSON数组。本文将介绍如何在Java中合并和拆分JSON数组,以及实现这些操作的技巧和示

如何在Java中将JSON数组转换为CSV? 如何在Java中将JSON数组转换为CSV? Aug 21, 2023 pm 08:27 PM

JSON可以用作数据交换格式,它是轻量级的且与语言无关。一个JSONArray可以解析文本字符串以生成类似于向量的对象,并支持java.util.List接口。我们可以使用org.json.CDL类将JSON数组转换为CSV格式,它提供了一个静态方法toString(),用于将JSONArray转换为逗号分隔的文本。我们需要导入org.apache.commons.io.FileUtils包,以使用writeStringToFile()方法将数据存储在CSV文件中。语法publicstaticj

我们如何在Java中合并两个JSON数组? 我们如何在Java中合并两个JSON数组? Aug 20, 2023 pm 11:05 PM

一个JSON 是一种轻量级的 数据交换格式,JSON的格式是 键值对。JSONArray 可以解析文本从一个字符串生成一个类似向量的对象并支持java.util.List接口。我们可以使用org.json.simple.JSONArray类在Java中合并两个JSON数组。我们可以使用addAll() 方法(从接口 java.util.List继承)在下面的程序中合并两个JSON数组。示例

入门级指南:Java中操作JSON数组的常见问题解答。 入门级指南:Java中操作JSON数组的常见问题解答。 Sep 06, 2023 am 11:22 AM

入门级指南:Java中操作JSON数组的常见问题解答摘要:随着互联网的发展,JSON(JavaScriptObjectNotation)成为了数据交换的常用格式。在Java开发中,操作JSON数组是一项常见的任务。本文将解答Java开发中操作JSON数组的常见问题,并提供代码示例。如何创建一个JSON数组?在Java中,可以使用第三方库如JSON-jav

JAVA中如何解析和遍历JSON数组?掌握JSON数组处理技巧。 JAVA中如何解析和遍历JSON数组?掌握JSON数组处理技巧。 Sep 06, 2023 am 11:30 AM

JAVA中如何解析和遍历JSON数组?掌握JSON数组处理技巧。随着现代互联网的快速发展,JSON(JavaScriptObjectNotation)已经成为了一种常用的数据交换格式。它简洁、易读,非常适合用于Web开发和API接口的数据传输。在JAVA中,解析和遍历JSON数组是非常常见的操作。本篇文章将介绍如何使用JAVA解析JSON数组,并给出相应

如何在Java中将JSON数组反序列化为列表的通用类型? 如何在Java中将JSON数组反序列化为列表的通用类型? Aug 20, 2023 pm 12:13 PM

Gson库提供了一个名为com.google.gson.reflect.TypeToken的类来存储泛型类型,通过创建一个GsonTypeToken类并传递类类型。使用这个类型,Gson可以知道在泛型类中传递的类。语法publicclassTypeToken<T>extendsObject我们可以在下面的示例中将JSON数组反序列化为通用类型的列表示例importjava.lang.reflect.Type;importjava.util.*;importcom.go

MySQL将多条数据合并成一条的完整代码示例 MySQL将多条数据合并成一条的完整代码示例 Apr 08, 2025 am 10:15 AM

MySQL数据合并主要通过GROUP_CONCAT函数和JSON函数实现。1.使用GROUP_CONCAT函数将多条记录连接成字符串,通过ORDERBY和SEPARATOR控制顺序和分隔符,GROUPBY指定分组依据;2.对于复杂数据结构(如JSON),使用JSON_ARRAYAGG函数将多个JSON对象合并成JSON数组,需要MySQL5.7或更高版本支持。选择方法取决于数据结构和复杂度,需注意GROUP_CONCAT长度限制,并根据实际情况选择最优方案。

See all articles