我正在尝试在Go中解码一些json,但某些字段不会被解码。在此处查看在浏览器中运行的代码:
我究竟做错了什么?
我只需要MX记录,所以没有定义其他字段。据我从godoc了解到,您不需要定义不需要/不需要的字段。
// You can edit this code!
// Click here and start typing.
package main
import "fmt"
import "encoding/json"
func main() {
body := `
{"response": {
"status": "SUCCESS",
"data": {
"mxRecords": [
{
"value": "us2.mx3.mailhostbox.com.",
"ttl": 1,
"priority": 100,
"hostName": "@"
},
{
"value": "us2.mx1.mailhostbox.com.",
"ttl": 1,
"priority": 100,
"hostName": "@"
},
{
"value": "us2.mx2.mailhostbox.com.",
"ttl": 1,
"priority": 100,
"hostName": "@"
}
],
"cnameRecords": [
{
"aliasHost": "pop.a.co.uk.",
"canonicalHost": "us2.pop.mailhostbox.com."
},
{
"aliasHost": "webmail.a.co.uk.",
"canonicalHost": "us2.webmail.mailhostbox.com."
},
{
"aliasHost": "smtp.a.co.uk.",
"canonicalHost": "us2.smtp.mailhostbox.com."
},
{
"aliasHost": "imap.a.co.uk.",
"canonicalHost": "us2.imap.mailhostbox.com."
}
],
"dkimTxtRecord": {
"domainname": "20a19._domainkey.a.co.uk",
"value": "\"v=DKIM1; g=*; k=rsa; p=DkfbhO8Oyy0E1WyUWwIDAQAB\"",
"ttl": 1
},
"spfTxtRecord": {
"domainname": "a.co.uk",
"value": "\"v=spf1 redirect=_spf.mailhostbox.com\"",
"ttl": 1
},
"loginUrl": "us2.cp.mailhostbox.com"
}
}}`
type MxRecords struct {
value string
ttl int
priority int
hostName string
}
type Data struct {
mxRecords []MxRecords
}
type Response struct {
Status string `json:"status"`
Data Data `json:"data"`
}
type apiR struct {
Response Response
}
var r apiR
err := json.Unmarshal([]byte(body), &r)
if err != nil {
fmt.Printf("err was %v", err)
}
fmt.Printf("decoded is %v", r)
}
按照有关json.Unmarshal的go
documentaiton
所述,您只能对导出的字段进行解码,主要原因是外部软件包(例如encoding/json
)无法访问未导出的字段。
如果您的json不遵循名称的go约定,则可以json
在字段中使用标记来更改json键和struct字段之间的匹配。
范例:
package main
import (
"fmt"
"encoding/json"
)
type T struct {
Foo string `json:"foo"`
}
func main() {
text := []byte(`{"foo":"bar"}`)
var t T
err := json.Unmarshal(text, &t)
if err != nil {
panic(err)
}
fmt.Println(t)
}
问题内容: 我正在尝试通过创建JSON文件并将其解析为结构来配置Go程序: config.json文件: 该程序可以编译并运行,没有任何错误,但是print语句输出: (错误和两个空字符串) 我也尝试过,但结果相同。 如何以填充结构值的方式解析JSON? 问题答案: 您没有导出struct元素。它们都以小写字母开头。 将结构元素的首字母大写以将其导出。JSON编码器/解码器不会使用未导出的结构元素
我正在尝试将上面的JSON解析为数据结构。我最初使用Gson,但大多数解决方案建议创建一个反映我的Gson结构的类结构并使用fromJson(String, Class),但我不想这样做,因为JSON的结构可能会改变,我不想每次都格式化我的类。
我正在尝试将JSON转换为GSON,我不确定这是最好的结构。 所有响应都由代码、消息和数据结构组成。但数据的内部结构可能会有所不同。 这是我的回应对象
我有一个任务要处理文件https://github.com/mledoze/countries/blob/master/countries.json,这个文件相当大。首先,我用下载了它,并尝试使用0元素: 然而,整个json文件被识别为“str”,而作为0元素,我收到的只是“[”,我该如何修复这个问题呢?
问题内容: 我希望解码以下JSON数据: 不确定是否将其放在NSArray或NSDictionary中 欢迎任何评论 问题答案: 您正在使用哪个iOS版本?在iOS 5中,您具有用于解析JSON数据的类,如果您需要定位较旧的iOS或MAC OSX,则应使用第三方库,例如。发布的字符串将是NSDictionary,其数组包含一个字典。使用键可以访问该阵列 在代码中: 在SWIFT 2.0中: [更新
问题内容: 我有一个mysqli查询,我需要将其格式化为移动应用程序的JSON。 我已经设法为查询结果生成一个XML文档,但是我正在寻找更轻量的东西。(有关我当前的XML代码,请参见下文) 问题答案: 这样的输出: 如果您想要其他样式,可以尝试以下方法: 输出将是这样的: