As far as I know those two libraries are the best way to do it if you care about validation.
If you don’t care about validation of course you can use the method in that link you shared, or do lots of naughty things with Obj.magic (which of course can be very dangerous from a code correctness point of view!).
I personally use decco, because it is so extremely easy to setup (just add [@decco][@decco.decode] or [@decco.encode] above the type you want to decode to depending on your use).
[I’ve heard that decco can sometimes add extra code and be more heavy than bs-json, and since it is a ppx can slightly slow down your compile - just to list some of it’s downsides.]