pyList

type *ujson.JSON does not support indexing

尝试用go-ujson https://github.com/mreiferson/go-ujson 11 来解析json 数据,把数据库里的json 字符解析为go map 数据,可以通过obj2.Get("somekey").String() 的方式获取某个key 的值,但尝试更新某个key 的值就出现标题的错误:

type *ujson.JSON does not support indexing

只能通过go 标准库来做了:

package main
 
import (
    "encoding/json"
    "fmt"
)
 
func main() {
    a := []byte(`{"apple": 5, "lettuce": 7}`)
    var dat map[string]interface{}

    if err := json.Unmarshal(a, &dat); err != nil {
        panic(err)
    }

    fmt.Println("dat:", dat)

    // update
    dat["apple"] = 100
    fmt.Println("dat 2:", dat)
}

go 标准库json 操作示例

package main

import (
      "encoding/json"
      "log"
)

func main(){
    //申明和定义对象
    var m Message = Message {Head:"h", Msg:"m"}
    //obj->json
    jm , _:= toJson(m)
    log.Println(m, "toJson:", jm);

    //定义一个对象
    var mj map[string]interface{}
    //json->obj
    parse(jm, &mj)
    //打印
    log.Println(jm, "parseJson:", mj, mj["Head"]);
}

//实体对象
type Message struct{
      Head string
      Msg string
}

//解析对象->json
func toJson(m interface{}) (string, error) {
    b, err := json.Marshal(&m)
    return string(b), err
}

//解析json->对象
func parse(str string , v  interface{}) error{
    return json.Unmarshal([]byte(str),  v)
}

输出

{h m} toJson: {"Head":"h","Msg":"m"}
{"Head":"h","Msg":"m"} parseJson: map[Head:h Msg:m] h

本文标签: golang ujson json
相关推荐
本文网址: https://pylist.com/t/1433928792 (转载注明出处)
如果你有任何建议或疑问可以在下面 留言
发表第一条评论!
验证码图片