QUESTIONgolang | des données arbitraires unmarshalling
est-il un moyen de données JSON marshall de telle manière qu'il puisse être unmarshalled dans les parties/sections? Disons que la moitié supérieure des données est un "code" qui indiquerait quoi faire avec la moitié inférieure ... comme unmarshall la moitié inférieure dans une structure spécifique en fonction du "code".
Il y a deux struct qui peuvent être envoyés comme la moitié inférieure ...
type Range Struct {
Start int
End int
}
type User struct {
ID int
Pass int
}
PSEUDO CODE EXEMPLE
Il peut ressembler à ceci ...
message := &Message{
Code: 4,
&Range {
Start: 1,
End: 10,
}
}
Cela peut ressembler à ça ...
message := &Message{
Code: 3,
&User {
ID: 1,
Pass: 1234,
}
}
Ainsi, lorsque unmarshalling que les données que je pouvais ...
// get code from top half
m := Message{}
err = json.UnMarshallTopHalf(byteArray, &m)
if m.Code == 4 {
// ok, the code was four, lets unmarshall into type Range
r := Range{}
json.UnmarshalBottomHalf(byteArray, &r)
}
J'ai regardé JSON & Go apprendre à Marshall et struct définis unmarshall. Je peux le faire, mais je ne peux pas trouver un moyen pour les données arbitraires comme dans l'exemple ci-dessus ...
La bonne option peut être d'utiliser des interfaces, voir http://gregtrowbridge.com/golang-json-serialization-with-interfaces/- n'ont pas essayé ce code, mais cette approche semble correcte. – Ravi
@Ravi | Je crois que c'est l'approche que je vais devoir adopter. Si vous le mettez dans une forme de réponse, je l'accepterai. –