~~~
求下面的代码 有问题, 我需要 一个转换JSON 一个反序列化到MAP 方便修改值,思路这样的
比如生成JSON值
var a map[string]interface{}
a["code"]="100"
a["msg"]="ok"
result := JSON_Serialize(a)
//这样result得到一串JSON值了
================
反序列化
从数据库或则字符串获取得到一串JSON值
bb := `{"Code":"-1","Msg":"code error!"}`
result2 :=JSON_Deserialize(bb)
//然后修改一些值 修改完毕再转换JSON即可
result2["Code"]=="200"
result2["Msg"]="no123"
result3 := JSON_Serialize(result2)
~~~
~~~
func JSON_Serialize(obj interface{}) (mapOBJ map[string]interface{}, err error) {
b, err := json.Marshal(obj)
if err != nil {
return nil, err
}
return b
}
func JSON_Deserialize(obj interface{}) (mapOBJ map[string]interface{}, err error) {
var result map[string]interface{}
if err := json.Unmarshal(obj, &result); err != nil {
return nil, err
}
return result, nil
}
~~~
json.Unmarshal 可以直接反序列化到struct啊。你要修改一些值 直接调用json.Unmarshal 反序列化到strcut 然后修改 就行了。不要整个map[string]interface{}
具体到你代码的问题:
61行的错误时返回值个数和声明不匹配 return b,nil
66 传入的参数类型不匹配 json.Unmarshal 的第一参数是[]byte 类型 你不能直接传一个interface
#6
更多评论