亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何解決接口{}是字符串,而不是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 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號