UObject vs UStruct vs An Alternative?

UStruct should be the way to go in your case.

struct can use the “private” keyword just like class. In fact class and struct has no difference under the hood in C++. Is there any specific issue you encountered when trying to implement using struct?