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

如何解决接口{}是字符串,而不是golang中的[]uint8?

如何解决接口{}是字符串,而不是golang中的[]uint8?

Go
四季花海 2023-05-15 10:12:21
我想在json文件中进行读写操作。我为此编写了一个程序但是在解组数据时发生了一个错误代码如下: -package mainimport (  "encoding/json"  "fmt"  "io/ioutil")type Page struct {  Id           int    `json:"_id" bson:"_id"`  Title        string `json:"title" bson:"title"`  Type         string `json:"type" bson:"type"`  Description  string `json:"description" bson:"description"`  ProfileImage string `json:"profile_image" bson:"profile_image"`  DateTime     int64  `json:"date_time" bson:"date_time"`  Author       string `json:"author" bson:"author"`  Status       int    `json:"status" bson:"status"`  Slug         string `json:"slug" bson:"slug"`}func main() {   plan, _ := ioutil.ReadFile("page.json")   var data interface{}   err := json.Unmarshal(plan, &data)   if err != nil {    fmt.Println(err)   }   if sl, ok := data.([]interface{}); ok {     counter := 0      for _, val := range sl {        counter++        md, _ := val.(map[string]interface{})        md["_id"] = counter        fmt.Println(md["_id"])        for _, k := range md {            // fmt.Println(k.([]byte))            rankings := Page{}            err = json.Unmarshal(k.([]uint8), &rankings)            if err != nil {                // nozzle.printError("opening config file", err.Error())            }            rankingsJson, _ := json.Marshal(rankings)            err = ioutil.WriteFile("output.json", rankingsJson, 0644)            fmt.Printf("%+v", rankings)        }      }   }}它给了我错误恐慌:接口转换:接口 {} 是字符串,而不是 []uint8协程 1 [正在运行]:主.main()/home/iron/go/src/test/json_object_read/main.go:38 +0x545
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

我在这里提供了在文件中写入 JSON 并附加更多列的解决方案,请遵循以下代码。


package main


import (

  "encoding/json"

  "fmt"

  "io/ioutil"

)


type Page struct {

  Id           int    `json:"_id" bson:"_id"`

  Title        string `json:"title" bson:"title"`

  Type         string `json:"type" bson:"type"`

  Description  string `json:"description" bson:"description"`

  ProfileImage string `json:"profile_image" bson:"profile_image"`

  DateTime     int64  `json:"date_time" bson:"date_time"`

  Author       string `json:"author" bson:"author"`

  Status       int    `json:"status" bson:"status"`

  Slug         string `json:"slug" bson:"slug"`

}


func main() {

   var data interface{}

   plan, _ := ioutil.ReadFile("page.json")

   err := json.Unmarshal([]byte(plan), &data)

    if err != nil {

        fmt.Println(err)

    }


    var ranking = Page{}

    var rankings = []Page{}

    if sl, ok := data.([]interface{}); ok {

        var counter int = 0


        for _, val := range sl {

            counter = counter + 1

            md, _ := val.(map[string]interface{})

            md["_id"] = counter

            b, err := json.Marshal(md)

            if err != nil {

                panic(err)

            }


            // ********************* Unmarshal *********************

            err = json.Unmarshal(b, &ranking)

            if err != nil {

                fmt.Println(err)

            }


            rankings = append(rankings, ranking)


        }

    }


    rankingsJson, _ := json.Marshal(rankings)

    err = ioutil.WriteFile("output.json", rankingsJson, 0644)

    fmt.Printf("%+v", rankings)

}


查看完整回答
反对 回复 2023-05-15
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

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