如何将 Document map Snapshot 从 firestore 转换为 struct slice?此示例中未显示该结构,但问题代码位于页面末尾。
除底部的标记代码外,此代码有效。代码与 FireStore 数据库通信并返回一个名为 COMPLEX_NONACS 的复杂结构。基本上,我想转换 .将快照存储到 json golang 对象中。
package main
import (
"context"
"fmt"
"log"
"firebase.google.com/go"
"google.golang.org/api/iterator"
"google.golang.org/api/option"
)
func check(e error) {
if e != nil {
panic(e)
}
}
func main() {
ctx := context.Background()
sa := option.WithCredentialsFile("./scai-qit-fb-adminsdk.json")
app, err := firebase.NewApp(ctx, nil, sa)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
client, err := app.Firestore(ctx)
if err != nil {
log.Fatal(err)
}
defer client.Close()
CompNACS := []string{}
var SCNACS COMPLEX_NONACS // single Complex NONACS
var MCNACS []COMPLEX_NONACS
iter := client.Collection("COMPLEX_NONACS").Documents(ctx)
for {
doc, err := iter.Next()
if err == iterator.Done {
break
}
if err != nil {
log.Fatalf("Failed to iterate: %v", err)
}
//This part works. WIll return a Map of each Document
fmt.Println("--------------------------/n")
fmt.Println(doc.Ref.ID)
fmt.Println("--/n")
fmt.Println(doc.Data())
// PUT ANSWER HERE...
// doc.Data() should return map[String] interface{} that is
// actually of a struct TYPE COMPLEX_NONACS.
// Question is there a simpler way to CAST doc.Data() as
// a type? Docs say this...
// Data returns the DocumentSnapshot's fields as a map.
// It is equivalent to
// var m map[string]interface{}
// d.DataTo(&m)
// except that it returns nil if the document does not exist.
//--- this is the error ---
// The problem cannot convert to COMPLEX_NONACS
SCNACS = COMPLEX_NONACS(doc.Data())
fmt.Println(SCNACS)
CompNACS = append(CompNACS, doc.Ref.ID)
}
}
/==========================
前两个文件...
集合中所有文档的结构都相同,但有些文档只是具有不同的字段组合。我会列出结构,但它很大。
--------------------------/n
A01B01C01D01
--/n
map[E01PCI: DE03CABG:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] E06CPCI: DE06CCABG:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] DE01PCI:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] DE06CPCI:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] DF03CABGPCI:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] DE05CCABG:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] DE04PCI:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] DE07BPRIMARY:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] Q04PRIORCABG:No Previous CABG DF03PRIMARY:map[TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT:] E06BPCI: E05BCABG: E06CCABG: DF04PRIMARY:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] DE05APCI:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] E03PCI: F03CABGPCI: DE06CABG:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] DE05CPCI:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] E04PRIMARY: DE05BPCI:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] DE04CABG:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] Q03:C01 E06APRIMARY:48-Asymptomatic DE06PCI:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] F03CABG: E05ACABG: DEADEND: DE04PRIMARY:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] E05CPCI: Q01IschemicSymptoms:Asymptomatic (No ischemic symptoms) DE02PCI:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] INDEX:A01B01C01D01 E05PRIMARY: F01PRIMARY: E01PRIMARY: Q03NonInvasiveTestResults:No non-invasive testing performed E03PRIMARY: DE03PRIMARY:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] Q02AntiIschemicMedicalTherapy:No Therapy DF04PCI:map[INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE:] DF01PRIMARY:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] F04PCI: E05CCABG: DE07CCABG:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] E07CCABG: E07PRIMARY:49-Asymptomatic F03PRIMARY: E05CPRIMARY:23-Asymptomatic E07BPRIMARY: E07BCABG: DE06PRIMARY:map[TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT:] DE07CABG:map[INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE:] DF02PRIMARY:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] DE05PRIMARY:map[TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT:] DE06APCI:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] DF03CABG:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] E06ACABG: E06BPRIMARY: E07APCI: DE06APRIMARY:map[SCOREGRAPHIC:08 SCORE:08 INDICATION:48 SCOREDEFINITIONS:48 Q01CAT:Asymptomatic TermDescription:[48. Three-vessel CAD (no left main) Abnormal LV systolic function -] Name:48-Asymptomatic] DF04CABG:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] E06APCI: E02PCI: E05PCI: DE07ACABG:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] E04CABG: DE05ACABG:map[INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE:] DE07APRIMARY:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] DE06BCABG:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] F04CABG: Q02:B01 DE07PRIMARY:map[TermDescription:[49. Left main stenosis -] Name:49-Asymptomatic SCOREGRAPHIC:09 SCORE:09 INDICATION:49 SCOREDEFINITIONS:49 Q01CAT:Asymptomatic] DE07PCI:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] E06PCI: DE06BPRIMARY:map[INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE:] E02PRIMARY:20-Asymptomatic DE06ACABG:map[INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE:] DE05BCABG:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] E07CABG: DE07CPRIMARY:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] DE05BPRIMARY:map[SCOREGRAPHIC:03 SCORE:03 INDICATION:22 SCOREDEFINITIONS:22 Q01CAT:Asymptomatic TermDescription:[22. One- or 2-vessel CAD with borderline stenosis 50% to 60% No noninvasive testing performed or equivocal test results present FFR less than or equal to 0.80* and/or IVUS with significant reduction in] Name:22-Asymptomatic] E02CABG: E04PCI: DE05APRIMARY:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] DE05CPRIMARY:map[SCORE:01 INDICATION:23 SCOREDEFINITIONS:23 Q01CAT:Asymptomatic TermDescription:[23. One- or 2-vessel CAD with borderline stenosis 50% to 60% No noninvasive testing performed or equivocal test results present FFR or IVUS findings do not meet criteria for significant stenosis] Name:23-Asymptomatic SCOREGRAPHIC:01] DE07BCABG:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] E01CABG: E05BPCI: E05BPRIMARY:22-Asymptomatic DE07CPCI:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] DE02PRIMARY:map[Q01CAT:Asymptomatic TermDescription:[20. One- or 2-vessel CAD without involvement of proximal LAD No noninvasive testing performed -] Name:20-Asymptomatic SCOREGRAPHIC:03 SCORE:03 INDICATION:20 SCOREDEFINITIONS:201] DE01CABG:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] Q01:A01 E03CABG: E06PRIMARY: DE06CPRIMARY:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] DE06BPCI:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] DE02CABG:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] DF04CABGPCI:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] F02PRIMARY: E05APCI: E07APRIMARY: F04PRIMARY: E05CABG: E06CPRIMARY: E06CABG: DE07APCI:map[TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT:] Q04:D01 DE01PRIMARY:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] E07CPRIMARY: F04CABGPCI: E07CPCI: E05APRIMARY: DE05PCI:map[TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT:] DF03PCI:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] F03PCI: E07ACABG: DE05CABG:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] Title:NACS-100 DE03PCI:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] E07BPCI: E07PCI: DE07BPCI:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] E06BCABG:]
--------------------------/n
A01B01C01D02
--/n
map[DF03PCI:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] F04PRIMARY: DEADEND:NR DE05CPRIMARY:map[TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT:] DE05CPCI:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] DE07BPCI:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] F02PRIMARY: DE07CPRIMARY:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] DE07CABG:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] E02PRIMARY: DE05BCABG:map[INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE:] E01PCI: Q03NonInvasiveTestResults:No non-invasive testing performed E07BPRIMARY: E06CPCI: E03PRIMARY: E06CCABG: E06APRIMARY: E07PCI: DE05BPCI:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] E01CABG: DE05CCABG:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] DF04CABGPCI:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] DE07ACABG:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] E04CABG: DE05PCI:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] DE07APCI:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] E05CABG: INDEX:A01B01C01D02 E04PCI: DE07CPCI:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] E06PCI: E05CCABG: F03PRIMARY: F04CABGPCI: E05APCI: E05BPRIMARY: DE06CPCI:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] DF03CABGPCI:map[Q01CAT: TermDescription:[] Name:69 SCOREGRAPHIC: SCORE: INDICATION:69 SCOREDEFINITIONS:] E07CPCI: DE06APCI:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] DE05ACABG:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] DE05APRIMARY:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] DE06BPCI:map[TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT:] DF04CABG:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] DE03PCI:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] DE07CCABG:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] DE06ACABG:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] F03PCI: DE06PRIMARY:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] E07CABG: E05BCABG: DE06BCABG:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] F03CABGPCI:69 DE06BPRIMARY:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] F04CABG: E05PRIMARY: Title:NACS-500 DE07APRIMARY:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] E06ACABG: E03PCI: DE02CABG:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] DE06CPRIMARY:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] DE07BPRIMARY:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] F01PRIMARY: DE01PCI:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] DE06APRIMARY:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] E07APCI: DE06CABG:map[INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE:] DE07BCABG:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] DF02PRIMARY:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] E04PRIMARY: DF04PRIMARY:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] DE05PRIMARY:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] E06CPRIMARY: Q02AntiIschemicMedicalTherapy:No Therapy E06PRIMARY: E01PRIMARY: Q04PRIORCABG:Previous CABG E05CPCI: DF01PRIMARY:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] E07APRIMARY: E06BPRIMARY: E05CPRIMARY: DE03PRIMARY:map[TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT:] E06CABG: E03CABG: DE02PCI:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] F03CABG: E05APRIMARY: DF04PCI:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] DE05CABG:map[TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT:] DE05APCI:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] E02PCI: Q01IschemicSymptoms:Asymptomatic (No ischemic symptoms) E07PRIMARY: DE04CABG:map[INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE:] E06APCI: E06BCABG: DE02PRIMARY:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] DE06PCI:map[INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE:] DF03CABG:map[SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC:] DE07PCI:map[SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION:] Q03:C01 E05PCI: DE06CCABG:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] DE04PCI:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] E07BCABG: E07CPRIMARY: E02CABG: DE03CABG:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] F04PCI: E07ACABG: DE04PRIMARY:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] Q04:D02 E05BPCI: E07CCABG: DE05BPRIMARY:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] DF03PRIMARY:map[Q01CAT: TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS:] DE01PRIMARY:map[SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil> Name:] E05ACABG: Q01:A01 E07BPCI: DE01CABG:map[TermDescription:<nil> Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT:] Q02:B01 DE07PRIMARY:map[Name: SCOREGRAPHIC: SCORE: INDICATION: SCOREDEFINITIONS: Q01CAT: TermDescription:<nil>] E06BPCI:]
最佳答案
看起来您正在从 Firebase 获取类型为 map[string]interface{} 的结果数据,您需要将其转换为类型 map[string]*Foo (其中 Foo 是在其他地方定义的一些结构)。
如果 Foo 结构可以很容易地反序列化/序列化为某种中间格式,那么您可以序列化未类型化的值,然后将它们反序列化为所需类型的变量。
例如,使用 JSON ( Go Playground ):
docdata := getDocData()
for label, data := range docdata {
// Marshal the untyped data into a suitable format.
bs, err := json.Marshal(data)
check(err)
// Unmarshal the formatted data into a variable with desired type.
var foo *Foo
err = json.Unmarshal(bs, &foo)
check(err)
fmt.Printf("OK: label=%q, foo=%#v\n", label, foo)
}
// OK: label="E01PCI", foo=(*main.Foo)(nil)
// OK: label="E06CPCI", foo=(*main.Foo)(nil)
// OK: label="DE03CABG", foo=&main.Foo{Name:"Alpha", SCOREGRAPHIC:"Bravo", SCORE:3.14159, INDICATION:true, SCOREDEFINITIONS:"Echo", Q01CAT:6, TermDescription:(*string)(nil)}
// OK: label="DE06CCABG", foo=&main.Foo{Name:"Hotel", SCOREGRAPHIC:"India", SCORE:10.1, INDICATION:true, SCOREDEFINITIONS:"Lima", Q01CAT:13, TermDescription:(*string)(0x1050c3d0)}
从您的问题中不清楚 doc.Data() 中的数据是您提到的整个结构还是包含您的结构实例的某种其他类型的结构化数据(我的示例假定后者);然而,序列化为中间格式和反序列化为类型化变量的一般想法应该以任何一种方式工作。
关于firebase - Golang、Firebase...将 MAP 转换为结构 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52636388/
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]
这道题是thisquestion的逆题.给定一个散列,每个键都有一个数组,例如{[:a,:b,:c]=>1,[:a,:b,:d]=>2,[:a,:e]=>3,[:f]=>4,}将其转换为嵌套哈希的最佳方法是什么{:a=>{:b=>{:c=>1,:d=>2},:e=>3,},:f=>4,} 最佳答案 这是一个迭代的解决方案,递归的解决方案留给读者作为练习:defconvert(h={})ret={}h.eachdo|k,v|node=retk[0..-2].each{|x|node[x]||={};node=node[x]}node[
我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最
我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。
2022/8/4更新支持加入水印水印必须包含透明图像,并且水印图像大小要等于原图像的大小pythonconvert_image_to_video.py-f30-mwatermark.pngim_dirout.mkv2022/6/21更新让命令行参数更加易用新的命令行使用方法pythonconvert_image_to_video.py-f30im_dirout.mkvFFMPEG命令行转换一组JPG图像到视频时,是将这组图像视为MJPG流。我需要转换一组PNG图像到视频,FFMPEG就不认了。pyav内置了ffmpeg库,不需要系统带有ffmpeg工具因此我使用ffmpeg的python包装p
您将如何构建一个简单的Sinatra应用程序?我正在制作,我希望该应用具有以下功能:“应用程序”更像是一个包含所有信息的管理仪表板。然后另一个应用程序将通过REST访问信息。我还没有创建仪表板,只是从数据库中获取东西session和身份验证(尚未实现)您可以上传图片,其他应用可以显示这些图片我已经使用RSpec创建了一个测试文件通过Prawn生成报告目前的设置是这样的:app.rbtest_app.rb因为我实际上只有应用程序和测试文件。到目前为止,我已经将Datamapper用于ORM,将SQLite用于数据库。这是我的第一个Ruby/Sinatra项目,所以欢迎任何和所有建议-我应
我需要一个通过输入字符串进行计算的方法,像这样function="(a/b)*100"a=25b=50function.something>>50有什么方法吗? 最佳答案 您可以使用instance_eval:function="(a/b)*100"a=25.0b=50instance_evalfunction#=>50.0请注意,使用eval本质上是不安全的,尤其是当您使用外部输入时,因为它可能包含注入(inject)的恶意代码。另请注意,a设置为25.0而不是25,因为如果它是整数a/b将导致0(整数)。