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

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

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

Go
青春有我 2022-04-26 14:35:09
我想要什么:“逐行”比较两个 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.
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

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


var out bytes.Buffer

err := json.Indent(&out, jsonData.Bytes(), "", "  ")

if err != nil {

    log.Fatal(err)

}

outStr := out.String()

slice := strings.Split(outStr,"\n")


查看完整回答
反对 回复 2022-04-26
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

如果我理解正确,您想比较确切字段的匹配。所以你可以尝试使用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

   }


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号