jsonpb, зачем декодировать int64 в json, результат - строка.как int64 str = 10 -> str: "10" - PullRequest
0 голосов
/ 24 декабря 2018
//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(`"`)
}

Вопрос:

Зачем добавлять «\» вокруг значения?

1 Ответ

0 голосов
/ 24 декабря 2018

Поскольку то, как целые числа представлены в javascript, означает, что максимальное целое число (от 2 до степени 53) -1 (см. https://stackoverflow.com/a/307200/1153938)

Наибольший int из int64 больше, чемтаким образом, чтобы защитить от случая больших целых чисел, библиотека делает строку цифр вместо

Поскольку числа javascript подписаны, то же самое относится и к большим отрицательным числам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...