golang 转换json字符串为json对象的小问题
2015-12-19 00:27
861 查看
前段时间修改了一个小小的管理系统,本来是挺简单的 按照用户需求显示一些数据,但是却为了一个小小的错误,竟然找了两个晚上的bug,白天上课,所以只能晚上做东西了,好了,进入正题。
一般我们在js中发送一个json对象时,会使用JSON.stringify() 将一个json对象转换为json字符串,再发送.e.g
可以看到第一次打印obj是一个json对象,而第二次打印是一个stirng,而我们就是要发送这一个json字符串。
首先贴上golang的代码:
然后我们看看golang得到了什么
得到这个字符串了,但是却不能使用obj.item1,为什么呢,golang 结构体当中大写开头的是可导出字符,小写开头的是不可导出字符。就类似于c++中class的public, private,小写只能内部访问,大写就相当于public了。
obj.Item1就得到了,是不是很简单啊,嘻嘻,感觉这和写c++时找了好几小时的错误,结果就是变量名写错了,少写个分号或者函数声明的参数和函数定义的参数不同的错误一样,就是这么坑。
上传了一个刚刚写的小demo。
http://download.csdn.net/detail/tangs_/9367540
一般我们在js中发送一个json对象时,会使用JSON.stringify() 将一个json对象转换为json字符串,再发送.e.g
var obj = { "item1":"item1", "item2":"item2", "item3":"item3" }; console.log(obj); console.log(JSON.stringify(obj)); $.ajax({ url: "/test", type: "POST", data: { "data":JSON.stringify(obj) }, dataType:"json", success:function(data){ //dosomething }, error:function(arg_msg){ //dosomething } });
可以看到第一次打印obj是一个json对象,而第二次打印是一个stirng,而我们就是要发送这一个json字符串。
首先贴上golang的代码:
type Obj struct { item1 string `item1` item2 string `item2` item3 string `item3` } func TestHandle(w http.ResponseWriter, r *http.Request){ fmt.Println("test start...") obj := Obj{} r.ParseForm() temp := r.FormValue("data") //receive value form js fmt.Println(temp) //type string err := json.Unmarshal([]byte(temp),&obj) if(err != nil ){ fmt.Println("json error") } fmt.Println(obj.item1) //如果显示成功,说明golang转换json成功 }
然后我们看看golang得到了什么
得到这个字符串了,但是却不能使用obj.item1,为什么呢,golang 结构体当中大写开头的是可导出字符,小写开头的是不可导出字符。就类似于c++中class的public, private,小写只能内部访问,大写就相当于public了。
type Obj struct { Item1 string `item1` Item2 string `item2` Item3 string `item3` }
obj.Item1就得到了,是不是很简单啊,嘻嘻,感觉这和写c++时找了好几小时的错误,结果就是变量名写错了,少写个分号或者函数声明的参数和函数定义的参数不同的错误一样,就是这么坑。
上传了一个刚刚写的小demo。
http://download.csdn.net/detail/tangs_/9367540
相关文章推荐
- 一张图看懂JavaScript中数组的迭代方法:forEach、map、filter、reduce、every、some
- js实现滚动条滚动到页面底部继续加载
- js实现图片上传并正常显示
- js实现图片轮播效果
- js获取本机操作系统类型的两种方法
- js点击按钮实现带遮罩层的弹出视频效果
- JS数据类型分类
- RFC4627中文版-JSON格式定义
- JavaScript作用域和作用域链
- JavaScript中区块(block)的作用域
- js学习,变量提升(hositing)与作用域(Scoping)浅析
- 如何用js完美的解析lrc歌词
- MJExtension json快速解析
- 事件流:DOM事件与IE事件,事件冒泡与事件捕获
- js的一些学习笔记1
- js动态设置输入框字体/颜色
- 警告: No configuration found for the specified action: 'register' in namespace: '/jsp'. Form action de
- Sea.JS入门教程
- 轻松学习JavaScript二十一:DOM编程学习之获取元素节点的子节点和属性节点
- 【Js】深入学习作用域与作用域链