You don't even need to use a union.
If you use the name of the struct as an address you can just write the values to successive addresses after that - something like this pseudo code
myStructAddr = &myStruct
newByte = Serial.read()
(myStructAddr + n) = newByte
n++
I'm not sure if I have the reference to myStruct correct and I can't immediately find the code where I did this.
...R