ajax请求返回json数据–Go语言学习笔记
JSON简介
-
轻量级数据传输格式(语法)
-
基于JavaScript语言,是在JavaScript数组和对象基础上发展而来,和XML类似,都是独立语言
-
总体上分为两种:
{"key":value,"key":value}
- 一种是JSONObject(json对象)
[{"key":value},{"key":value}]//切片类型的结构体
- 一种是JSOONArray(json数组),包含多个JSONObject
-
key是string类型,value是string类型(值被双引号包围),也可以是数值或布尔类型或JSONObject或JSONArray类型
{“Name”:“ZhangMei”;“Sex”:“Female”}
定义了一个对象,该对象有两个属性即Name和Sex
- 可以使用Go语言标准库中encoding/json包下的Marsha()或Unmarshal()把结构体对象转换成[]byte或把[]byte中信息写入到结构体对象中
- 在转换过程中结构体属性tag中定义了json中的key,属性的值就是json中的value
- 如果属性没有配置tag,属性就是json中的key
- 属性的tag可以进行下面的配置
定义结构体
type User struct{
Name string
Age int
}
Web端的显示代码
func welcome2(w http.ResponseWriter,r*http.Request){
t,_:=template.ParseFiles("view/H8.html")
t.Execute(w,nil)
}
func showUser(w http.ResponseWriter,r*http.Request){
us:=make([]User,0)
us=append(us,User{"张三",12})
us=append(us,User{"纸老虎",13})
us=append(us,User{"大老虎",14})
us=append(us,User{"张无虚",18})
b,_:=json.Marshal(us)
w.Header().Set("Content-Type","application/json;charset=utf-8")//b由byte数组变为json数组
fmt.Fprintln(w,string(b))
}
func main(){
server:=http.Server{Addr:":8899"}
http.Handle("/static/",http.StripPrefix("/static/",http.FileServer(http.Dir("static"))))//加载静态数据
http.HandleFunc("/",welcome2)
http.HandleFunc("/showUser",showUser)
server.ListenAndServe()
}
<head>
<meta charset="UTF-8">
<title>ajax</title>
<script type="text/javascript" src="/static/js/jquery-1.7.2.js"></script>
<script type="text/javascript">
$(function (){
$("button").click(function(){
$.post("/showUser",function (data){
var result="";
for(var i=0;i<data.length;i++){
result+="<tr>";
result+="<td>"+data[i].Name+"</td>";
result+="<td>"+data[i].Age+"</td>";
result+="</tr>"
}
$("#mytbody").html(result);
})
})
})
</script>
</head>
<body>
<button>加载数据</button>
<table border="1">
<tr>
<td>姓名</td>
<td>年龄</td>
</tr>
<tbody id="mytbody">
</tbody>
</table>
</body>