登录
首页 >  Golang >  Go问答

拆分字符串以提取 JSON 数据

来源:stackoverflow

时间:2024-02-23 10:51:29 112浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《拆分字符串以提取 JSON 数据》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

我想要什么:“逐行”比较两个 json 文件(下面有更多解释)。

json 文件的样子

{
    "key": {},
    "key2": {},
    "key3": "val",
    "key4": [],
    "key5": [
        "k": {}
    ]
}

一般来说,我不知道实际的 json 结构。

假设我有两个缩进的 json 文件。在“逐行”比较下,我的意思是我想知道,1.json 中的第 2 行和 2.json 中的第 2 行不相等。

1.json

1 {
2     "k": "val"
3 }

2.json

1 {
2     "k": "vaaaaal"
3 }

我的问题是我无法直接将 json 解组到 []string

初始json数据存储在[]byte中,我使用downloaded从aws s3获取它,jsondata变量是writeatbuffer的对象

目前我只能将 json 解组为 map[string]interface{}interface{},但很难将 map[string]interface{} 转换为 []string。 p>

解决方案


到目前为止,我已经采用了这种方法,但我不确定它是最好的。

var out bytes.buffer
err := json.indent(&out, jsondata.bytes(), "", "  ")
if err != nil {
    log.fatal(err)
}
outstr := out.string()
slice := strings.split(outstr,"\n")

如果我理解正确的话,您想要比较精确字段的匹配。所以你可以尝试使用 map[string]string{}

这是一个例子

var jsonMap = map[string]string{}
   var json = []byte
   json = // get your json bytes here
   json.Unmarshal(json, &jsonMap)

   // Access your field's value
   fmt.Println(jsonMap["key"]) 

   // If you want slice, convert values from map to string slice
   slice := mapToSlice(jsonMap) 

   func mapToSlice(jsonMap map[string]string) []string {
       slice := make([]string)
       for _, value := range jsonMap {
          slice = append(slice, value)
       }
       return slice
   }

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>