解组 []string 中的 []byte json 数据

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


json 文件的样子:


{

    "key": {},

    "key2": {},

    "key3": "val",

    "key4": [],

    "key5": [

        "k": {}

    ]

}

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


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


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{}or interface{},但很难转换map[string]interface{}为[]string.


青春有我
浏览 173回答 2
2回答

有只小跳蛙

到目前为止,我已经采用了这种方法,但我不确定它是否是最好的。var out bytes.Buffererr := 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   }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go