json处理

作者: 寒云暮雨 | 来源:发表于2019-10-15 17:55 被阅读0次

    项目当中我们免不了json处理,尤其是现在前后端分类的大趋势下,这篇我们就讲讲常用的json处理

    /*
    @Author :   寒云
    @Email  :   1355081829@qq.com
    @Time : 2019/10/15 11:51
    */
    package main
    
    import (
        "github.com/gin-gonic/gin"
        "net/http"
    )
    
    func main() {
        r := gin.Default()
        r.GET("/json", func(c *gin.Context) {
            data := map[string]interface{}{
                "name": "hanyun",
                "html": "<b>Hello, world!</b>",
            }
            c.JSON(http.StatusOK, data)
        })
        r.GET("/jsonp", func(c *gin.Context) {
            data := map[string]interface{}{
                "name": "hanyun",
            }
            c.JSONP(http.StatusOK, data)
        })
    
        r.GET("/purejson", func(c *gin.Context) {
            c.PureJSON(200, gin.H{
                "html": "<b>Hello, world!</b>",
            })
        })
    
        _ = r.Run(":8089")
    }
    
    

    我们建立了三个路由
    1、访问http://127.0.0.1:8089/json

    {"html":"\u003cb\u003eHello, world!\u003c/b\u003e","name":"hanyun"}
    
    

    我们发现里面的HTML代码被转义了
    2、访问http://127.0.0.1:8089/purejson

    {"html":"<b>Hello, world!</b>"}
    

    HTML代码原封不动的显示出来
    3、访问http://127.0.0.1:8089/jsonp?callback=callback

    callback({"name":"hanyun"})
    

    我们返回了一个jsonp数据
    查看jsonp的源码

    func (c *Context) JSONP(code int, obj interface{}) {
        callback := c.DefaultQuery("callback", "")
        if callback == "" {
            c.Render(code, render.JSON{Data: obj})
            return
        }
        c.Render(code, render.JsonpJSON{Callback: callback, Data: obj})
    }
    
    

    我们发现他有个默认的参数用于返回jsonp的前缀
    更改我们的访问链接地址http://127.0.0.1:8089/jsonp?callback=hanyun
    我们返回的jsonp格式如下

    hanyun({"name":"hanyun"})
    

    相关文章

      网友评论

        本文标题:json处理

        本文链接:https://www.haomeiwen.com/subject/imasmctx.html