json字符串经过json.Unmarshal与json.Marshal出来字符串与最初的字符串顺序不一致问题

ltp5343 · 2017-04-29 10:30:38 · 5171 次点击

基于Token的解析可以一试。 go doc json.Decoder go doc json.Encoder

#4
更多评论

没有指定结构体,会按照字母排序输出的,可以像下面这样对json指定接收结构体,

type Ha struct {
    Iss int `json:"iss"`
    Iat int `json:"iat"`
}

func main() {
    src := `{"iss":148700047,"iat":1487000471}`
    var params Ha
    err := json.Unmarshal([]byte(src), ¶ms)
    if err != nil {
        fmt.Printf("%v\n", err)
        return
    }
    p, _ := json.Marshal(params)
    fmt.Printf("%v\n", params)
    fmt.Printf("%s\n", p)
}
#1

首先,谢谢你提供的方法。但是这个方法无法满足我们的需求。我们的需求是对http 请求体做一个md5,然后将md5值传到服务器端,服务器端会对请求体做md5,然后和客户端传递上来的md5进行比较。由于每个接口的请求body部分的内容是变化的,所以每个接口都定义这样一种struct感觉会很麻烦。

#2