//code:630
//jsonpb, why int64 -> json is string. like 10-->"10"
//https://github.com/golang/protobuf/blob/master/jsonpb/jsonpb.go
// Default handling defers to the encoding/json library.
b, err := json.Marshal(v.Interface())
if err != nil {
return err
}
needToQuote := string(b[0]) != `"` && (v.Kind() == reflect.Int64 || v.Kind() == reflect.Uint64)
if needToQuote {
out.write(`"`)
}
out.write(string(b))
if needToQuote {
out.write(`"`)
}
问题:
为什么在值后面加上“\'”?
最佳答案
因为用javascript表示整数的方式意味着最大整数是(2的53的幂)-1(请参阅https://stackoverflow.com/a/307200/1153938)int64
中最大的int大于该整数,因此,为了防止出现大int的情况,库会改成一串数字
由于对javascript数字进行了签名,对于较大的负数也是如此