Why is extending a struct from another struct throwing this error?

USTRUCT macro creates a UStruct object based on UField. It’s not a struct at all as you can see here: UStruct | Unreal Engine Documentation

I understand that I need to add USTRUCT(BlueprintType) to the following struct but why do I have to do this? I want my blueprint data type to extend a plain struct.

struct PLACEBUILDINGS_API FSerializableValueObject
{
	SimpleJsonValue data;

	FSerializableValueObject();
	~FSerializableValueObject();

	void Parse(std::string value);

	std::string Serialize();

	virtual void Populate() = 0;
};


USTRUCT(BlueprintType)
struct PLACEBUILDINGS_API FBuildingInstnace : public FSerializableValueObject
{
	GENERATED_USTRUCT_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "City")
	float positionI;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "City")
	float positionJ;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "City")
	float level;

	FBuildingInstnace()
	{

	}
};

Why vote down without justification?