json в структуру

149
02 декабря 2019, 06:50

Отправляю json через js сокет, читаю сообщение на сервере go:

{"x":554,"y":236,"speed":"0","radius":"6","speedMax":"0","acceleration":"0","friction":"0.00","color":"#ffffff","border":"#000000","widthBorder":"3"}

пытаюсь преобразовать в структуру:

p := &Point{}
err = json.Unmarshal([]byte(message), &p)
if err != nil {
    log.Print("err json:", err)
}
log.Println(p)

Выводит:

 &{0 0 0 0 0 0 0   }

Собственно что я делаю не так? Ошбибок некаких не выводит.

Вот структура:

type Point struct {
    x            float64 `json:"x"`
    y            float64 `json:"y"`
    speed        float64 `json:"speed"`
    speedMax     float64 `json:"speedMax"`
    acceleration float64 `json:"acceleration"`
    radius       float64 `json:"radius"`
    friction     float64 `json:"friction"`
    color        string  `json:"color"`
    border       string  `json:"border"`
    widthBorder  string  `json:"widthBorder"`
}
Answer 1

Если float приходит вам в виде текста т.е. в кавычках, то надо в аннотации поля добавить ",string" чтобы Unmarshaller понял, что еще нужно преобразовать: https://play.golang.org/p/4p_-uudYlpJ

package main
import (
    "encoding/json"
    "fmt"
    "log"
)
type Point struct {
    X            float64 `json:"x"`
    Y            float64 `json:"y"`
    Speed        float64 `json:"speed,string"`
    SpeedMax     float64 `json:"speedMaxs,string"`
    Acceleration float64 `json:"acceleration,string"`
    Radius       float64 `json:"radius,string"`
    Friction     float64 `json:"friction,string"`
    Color        string  `json:"color"`
    Border       string  `json:"border"`
    WidthBorder  string  `json:"widthBorder"`
}
func main() {
    const in = `{"x":554,"y":236,"speed":"1","radius":"6","speedMax":"5","acceleration":"4","friction":"0.01","color":"#ffffff","border":"#000000","widthBorder":"3"}`
    p := &Point{}
    err := json.Unmarshal([]byte(in), p)
    if err != nil {
        log.Print("err json:", err)
    }
    fmt.Printf("%#v", p)
}

Обратите внимание как по разному закодированы и описаны x,y и остальные поля.

READ ALSO
Как на TypeScript указать тип для фукнции?

Как на TypeScript указать тип для фукнции?

Мне нужно написать на typeScript типы для функции, которая принимает объект config, в свойствах которого записаны функции, а возвращает объект с теме...

142
Проблема с массивом | Discord Bot | NODE.js | JavaScript | discord.js

Проблема с массивом | Discord Bot | NODE.js | JavaScript | discord.js

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

144
Не отображает компонент в react js

Не отображает компонент в react js

пытаюсь вывести компонент через алерт по нажатии кнопки, но что-то не получается, что же делать?

145