golang 获取json中的数组
时间: 2024-06-09 19:01:17 浏览: 95
可以使用 Go 内置的 `encoding/json` 库来解析 JSON 字符串,然后获取数组。
假设有以下 JSON 字符串:
```json
{
"name": "John",
"age": 30,
"hobbies": ["reading", "running", "swimming"]
}
```
可以定义一个结构体来映射 JSON 字段:
```go
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Hobbies []string `json:"hobbies"`
}
```
然后使用 `json.Unmarshal()` 函数来将 JSON 字符串解析为结构体:
```go
str := `{"name":"John","age":30,"hobbies":["reading","running","swimming"]}`
var p Person
json.Unmarshal([]byte(str), &p)
```
最后就可以通过 `p.Hobbies` 来获取数组了:
```go
fmt.Println(p.Hobbies) // [reading running swimming]
```
相关问题
golang unexpected end of JSON input
在Go语言中,当使用Unmarshal()函数解析来自HTTP响应的JSON数据时,出现"unexpected end of JSON input"错误通常有以下几种情况。首先,可能是在通过http协议访问并读取数据时,没有成功获取到完整的JSON数据。这可能是由于网络连接问题或服务器返回的数据不完整导致的。其次,如果在使用Unmarshal()函数解析JSON数据时,传入的参数类型为[]byte,那么json包会认为这不是一个正确的JSON包,从而报错"unexpected end of JSON input"。因此,建议在使用Unmarshal()函数解析JSON数据之前,先将JSON数据转化为字符串再进行解析。最后,如果JSON数据中包含地址,地址中包括特殊符号(例如?、&),则需要先使用JSON.stringify将对象/数组转换为字符串,再使用encodeURIComponent进行编码。在接收数据时,需要先使用decodeURIComponent进行解码,然后再使用JSON.parse将字符串转换为JSON格式的对象/数组。这样可以避免出现"unexpected end of JSON input"错误。<em>1</em><em>2</em><em>3</em>
#### 引用[.reference_title]
- *1* *2* [golang使用josn.Unmarshal报错:unexpected end of JSON input](https://blog.csdn.net/zyecust/article/details/126159647)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item]
- *3* [解决Unexpected end of JSON input 报错](https://blog.csdn.net/qq_41288473/article/details/122964895)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item]
[ .reference_list ]
阅读全文