为了账号安全,请及时绑定邮箱和手机立即绑定

动态结构定义

动态结构定义

Go
潇湘沐 2022-07-04 16:41:44
我有一个用例,我将一些 json 文件转换为 Go 结构。我有以下文档结构{        "contentVersion": "1.0.0.0",    "paths" : [      {        "ParameterReference": "someValue",      },      {        "ParameterReference": "someOtherValue",      }    ],    "parameters": {        "label": { "value": "label" },        "domainName": { "value": "domain" },        "servicePackageLink": { "value": "bin\\test.cspkg" },        "pfxContent": { "value": "SampleCert.Content" },        "sampleCertThumbprint": {"value": "SampleCert.Thumbprint"},        "anotherSampleCertContent":{ "value" : "AnotherSampleCert.Content" },        "anotherSampleCertThumbprint": {"value": "AnotherSampleCert.Thumbprint"}    },    "secrets" :[      {        "TargetReference":"SERviceConfiGURatiONLiNK",        "Replacements":        {          "__Secret_Sample__" :          {            "SecretId":"secretID",            "EncryptWith" :"encryptWithValue"          },          "__Another_Secret_Sample__" :          {            "SecretId":"anotherSecretValue",            "EncryptWith" :"anotherEncryptWithValue"          },          "__Storage_ConnectionString__" : "someConnectionString"        },      },      {        "TargetReference":"None",        "Certificates":[          {            "Name":"AnotherSampleCert",            "ContentReference" : "contentReference"          }        ]      }    ]}  我面临的问题是 json 没有固定的模式,例如。如果您检查parameters对象,特别是名称为 的条目sampleCertSchema,在我的用例中,用户可以提供从 0 到 N 的任意数量的此类____CertSchemas值。因此,参数字段也可以如下"parameters": {        "label": { "value": "label" },        "domainName": { "value": "domain" },        "servicePackageLink": { "value": "bin\\test.cspkg" },        "pfxContent": { "value": "SampleCert.Content" }    },这将打印一个空结构。我的问题是,我应该如何在 Go 中定义一个结构,以便它能够加载一个带有非预定义条目的 json。使用 java/C# 我可以使用Object该类并创建一个文档,但我无法理解使用 Go 来执行此操作。
查看完整描述

2 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

go 中的等价物是 interface{},即空接口。例如,查看这个答案:Unmarshaling Into an Interface{} and Then Performing Type Assertion

一旦您知道要搜索的术语,您应该能够在需要时搜索更详细的内容。


查看完整回答
反对 回复 2022-07-04
?
互换的青春

TA贡献1797条经验 获得超6个赞

查看完整回答
反对 回复 2022-07-04
  • 2 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信