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

有没有办法从 Go 中的给定 JSON 中提取 JSON Schema?

有没有办法从 Go 中的给定 JSON 中提取 JSON Schema?

Go
小怪兽爱吃肉 2022-05-18 09:48:05
有没有办法将 JSON 转换为 Go 中的模式?我需要比较 2 个 JSON 模板或模式,但找不到任何包或功能来做同样的事情 - 有人可以帮我吗?
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

你可以看看gjson library。它具有解析和获取未编组的 JSON 的功能。您可以使用gjson功能来比较 json 结果。



查看完整回答
反对 回复 2022-05-18
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我认为您将需要将unmarshal它们递归(如果它们包含嵌套的 json)转换为类似的内容map[string]interface{},然后循环遍历并比较键。在这个问题上提到了一些库https://stackoverflow.com/a/42153666可以unmarshal安全地使用它们。


例如,您可以Exists在遍历未编组映射中的键时使用 gabs 库,以查看其他映射中是否存在相同的键。


// From gabs library

// Exists checks whether a field exists within the hierarchy.

func (g *Container) Exists(hierarchy ...string) bool {

    return g.Search(hierarchy...) != nil

}

编辑:这里没有库:https: //play.golang.org/p/jmfFsLT0G1n基于此代码高尔夫练习的测试用例:https ://codegolf.stackexchange.com/questions/195476/extract-all-keys-来自对象 json


查看完整回答
反对 回复 2022-05-18
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

Go 的标准库中提供的 json 包为我们提供了我们需要的所有功能。对于任何 JSON 字符串,解析它的标准方法是:


import "encoding/json" //...


// ...  myJsonString := `{"some":"json"}`


// `&myStoredVariable` is the address of the variable we want to store our // parsed data in 

json.Unmarshal([]byte(myJsonString), &myStoredVariable)


 //...


查看完整回答
反对 回复 2022-05-18
  • 3 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

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