作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我一直在使用这个存储库:
https://github.com/olivere/elastic
下一段代码是golang中elasticsearch查询的例子:
searchResult, err := client.Search().
Index("mx").
Type("postal_code").
Source(searchJson).
Pretty(true).
Do()
if err != nil {
panic(err)
}
if searchResult.Hits.TotalHits > 0 {
for _, hit := range searchResult.Hits.Hits {
var d Document
err := json.Unmarshal(*hit.Source, &d)
if err != nil {
// Deserialization failed
}
fmt.Printf("Document by %s: %s\n", d.Colonia, d.Ciudad)
}
} else {
fmt.Print("Found no documents\n")
}
这很好用,输出是这样的:
Document by Villa de Cortes: Distrito Federal
Document by Villa de Cortes: Sinaloa
Document by Villa de Cortes: Sinaloa
但我需要像 json 数组这样的输出:
[
{
"cp": "03530",
"colonia": "Villa de Cortes",
"ciudad": "Distrito Federal",
"delegacion": "Benito Juarez",
"location": {
"lat": "19.3487",
"lon": "-99.166"
}
},
{
"cp": "81270",
"colonia": "Villa de Cortes",
"ciudad": "Sinaloa",
"delegacion": "Ahome",
"location": {
"lat": "25.1584",
"lon": "-107.7063"
}
},
{
"cp": "80140",
"colonia": "Villa de Cortes",
"ciudad": "Sinaloa",
"delegacion": "Culiacan",
"location": {
"lat": "25.0239",
"lon": "-108.032"
}
}
]
如何将 hit.Source 反序列化为文档结构?
type Document struct {
Ciudad string `json:"ciudad"`
Colonia string `json:"colonia"`
Cp string `json:"cp"`
Delegacion string `json:"delegacion"`
Location struct {
Lat string `json:"lat"`
Lon string `json:"lon"`
} `json:"location"`
}
这是脚本的完整源代码:
https://gist.github.com/hectorgool/67730c8a72f2d34b09e5a8888987ea0c
最佳答案
好吧,您正在将数据解码到文档结构中,如果您想将其打印为原始 json,您可以简单地再次编码它,因此只会显示您在文档结构中指定的标签。
如果您希望输出是一个 json 数组,只需将所有文档存储到一个 slice 中,然后将整个内容编码
var documents []Document
for (...) {
(...)
documents = append(documents, d)
}
rawJsonDocuments, err := json.Marshal(documents)
fmt.Printf("%v", string(rawJsonDocuments) )
关于json - 如何将 hit.Source 反序列化为 golang 中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40769798/
我是一名优秀的程序员,十分优秀!