`

golang编程语言通过json文件生成struct及解析处理过程

 
阅读更多

本文地址:http://peihexian.iteye.com/blog/2429135

项目里面需要爬虫去爬高德地图,高德地图的返回json结果里面有时候字段对应值是字符串,有时候对应结果是[]一对中括号,代表结果为空,使用golang自带的json解析工具折腾半天,最后一查资料据说是性能最差的,说某东用的是easyjson去解析处理json文件,大概记录一下处理过程及遇到的坑。

 

1.easyjson的使用

   easyjson提供了一个命令行的工具,可以根据.go源码内的struct自动生成一个代理调用类文件,大概使用过程是先

go get -u github.com/mailru/easyjson

把它下载回来,然后

go install  github.com/mailru/easyjson/easyjson

自动编译安装到%GOPATH%\bin目录下面,需要生成代理代码需要你的项目里面有与json对应的struct,这个见下面的处理过程。

 

2.高德地图官方有在线的调试工具,可以根据参数返回json格式的查询结果,拿到结果以后我最初是手敲代码挨个去对应json文件字段的,其实有全自动的方法,就是访问https://mholt.github.io/json-to-go/ 这个网址,把json文件复制进去,自动就生成好了golang的struct,复制到项目里面,运行easyjson的自动生成代码命令生成项目内的代理代码:

easyjson -all models.go 

以上我是把网站里面生成的代码保存为我本机的models.go里面了,自动生成的文件叫做models_easyjson.go,这里面有序列号反序列化的代码。

 

3.第二步生成的代码去接收高德地图返回的json结果还是有些问题,就是个别字段有值的时候是字符串,没有值的时候是空[]结果的情况,解决办法是把原来的

Tel      []interface{}   `json:"tel"`

改为

Tel      interface{}   `json:"tel"`

就好了。

0
0
分享到:
评论

相关推荐

    Go-从JSON对象生成Influxdb协议

    在Go语言中,处理JSON数据并将其转换为特定协议,如InfluxDB的Line Protocol,是一项常见的任务。InfluxDB是一种流行的时间序列数据库,适用于监控、日志分析和大数据应用场景。Line Protocol是InfluxDB用于写入数据...

    Go语言中的JSON处理大师:encodingjson包全解析

    ### Go语言中的JSON处理大师:encoding/json包全解析 #### Go语言概述 Go语言,亦被称为Golang,是由Google开发并开源的一种静态类型的编译语言。它的设计目标是为了提高编程效率,尤其关注解决多核处理器上的性能...

    Golang JSON的进阶用法实例讲解

    特别是在Golang这样的现代编程语言中,JSON的处理是开发过程中不可或缺的一部分。Golang标准库中对JSON的支持非常到位,其提供了基本的JSON编码和解码功能,但随着业务场景的复杂化,仅仅依靠这些基础功能往往不能...

    Go语言的JSON处理详解

    Go语言通过`encoding/json`包提供了强大的JSON支持。这一标准库允许开发者轻松地生成和解析JSON数据。 ##### 2.1 JSON编码 Go语言中,`json.Marshal()`函数被用来将Go语言的数据结构编码成JSON格式。该函数遵循RFC...

    golang结构体与json格式串实例代码

    本文将详细介绍Go语言(Golang)中结构体(struct)与JSON格式串之间的转换实例代码。Go语言是一种编译型、静态类型语言,由Google开发,它具备简洁、快速、安全等特性,非常适合用于系统编程。Go语言中的结构体是一...

    Go Web编程 完整版 PDF

    - **处理文件上传**:讨论如何使用Go语言处理用户上传的文件。 #### 五、访问数据库 - **database/sql接口**:介绍Go标准库提供的数据库访问接口,了解如何使用该接口连接各种类型的数据库。 - **使用MySQL数据库**...

    go语言编译的发送邮件email.exe

    Go语言,也称为Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、具有C风格语法的编程语言。在本例中,我们关注的是一个用Go语言编写的程序,名为"email.exe",它的功能是发送电子邮件。这...

    go编程1

    Go语言,又被称为Golang,是由Google开发的一种静态类型的、编译式的、垃圾回收的、并发型且具有内存安全特性的编程语言。Go语言的设计旨在提高开发效率,简化并发编程,并提供高效的性能。本文将逐步介绍Go语言的...

    一起学GO语言

    - **文件上传**:处理文件上传操作。 - **模板渲染**:使用`html/template`包渲染HTML模板。 #### 14. GoMvcWeb框架 - **MVC架构**:模型-视图-控制器架构。 - **框架简介**:介绍GoMvc框架的基本特性和使用方式。...

    json-to-bson-go:帮助开发人员生成Go BSON类映射的模块

    在Golang这种静态类型的编程语言中,处理这两种格式时,通常需要手动定义结构体来映射JSON或BSON数据。`json-to-bson-go`是一个模块,它的目标是简化这个过程,自动为开发人员生成Go语言中的BSON类映射代码。 首先...

    Go语言数据交换:结构体的序列化与反序列化艺术

    Go,亦被称为Golang,是一款由Google开发并开源的编程语言。它的设计目标是为了提高编程效率,解决现代多核处理器所带来的性能挑战。Go语言具备诸多优势,使其成为当今软件开发中的热门选择之一。 1. **简洁性**:...

    gobaidumap

    "百度地图接口调用 golang 版"是一个用于在Golang编程语言中与百度地图API交互的库。这个库提供了一系列的功能,使开发者能够轻松地集成百度地图的服务到他们的项目中,例如进行地理位置相关的计算、地址解析和IP...

    go-deliver - Go语言编写的Payload交互工具.zip

    1. 结构化编程:go-deliver遵循Go语言的结构化编程思想,通过定义清晰的Payload结构体,让代码更加模块化,易于理解和维护。 2. 接口设计:go-deliver的核心接口设计允许用户自定义Payload的序列化和反序列化逻辑,...

    go Web开发1

    - **XML、JSON处理**:Go语言提供了内置的解析和生成XML、JSON数据的库。 - **正则处理**:使用`regexp`包进行正则表达式匹配和替换。 - **模板处理**:`text/template`和`html/template`用于生成动态HTML或其他...

    pg

    其次,**Go语言**(也称为Golang)是Google开发的一种静态类型的编程语言,设计时注重简洁、高效和可移植性。在本项目中,Go被用来编写这个天气预报查询工具。Go提供了强大的网络和HTTP库,使得开发这样的API客户端...

    beego中文开发文档

    - **请求数据处理**:解析并处理前端发送的数据。 - **session控制**:管理用户的会话状态。 - **过滤器**:实现请求前后的自定义逻辑。 - **flash数据**:临时存储信息并在下一个请求中显示。 - **URL构建**:生成...

    Go-用gRPCProtobufGo在分布式系统中实现连续递增ID

    它比JSON更紧凑、更快,并且易于解析。 接下来,我们将详细阐述如何使用这些工具来构建连续递增ID服务: 1. **定义服务**:在Protobuf文件中,你需要定义一个服务接口,比如`IdService`,其中包含一个`GenerateID`...

    学习型:使用Go创建Web服务

    在本课程中,我们将深入探讨如何使用Go语言创建Web服务,这...这个过程不仅涵盖了语言基础,还包括了Web服务设计、HTTP协议、JSON处理和并发编程等多个重要方面。准备好深入探索Go的世界,开启您的Web服务开发之旅吧!

Global site tag (gtag.js) - Google Analytics