FArchive& operator<< - problem with overloaded operator

I have overloaded operator:

FORCEINLINE FArchive& operator<<(FArchive &Ar, FMyJsonContainer& Data)
{
	Ar << Data.MyString;
};

And now I try to use it:

if (Ar.IsLoading())
{
	int32 ObjectNum;
	Ar << ObjectNum;

	for (int32 ObjIdx = 0; ObjIdx < ObjectNum; ObjIdx++)
	{
		FName KeyName;
		Ar << KeyName;

		FMyJsonContainer Data;
		//Data << Ar;

		ObjectMap.Add(KeyName, Data);
	}
}
else if (Ar.IsSaving())
{
	if (ObjectMap.Num() > 0)
	{
		int32 ObjectNum = ObjectMap.Num();
		Ar << ObjectNum;

		for (auto It = ObjectMap.CreateIterator(); It; ++It)
		{
			FName KeyName = FName(It.Key());
			Ar << KeyName;

			FMyJsonContainer Data = It.Value();
			Ar << Data;
		}
	}
}

In Ar.IsLoading() block this operator doesn’t work. (while compiling code, there are errors indicated that proper overloaded operator cannot be found).
But it works in Ar.IsSaving() block.

What should I do to make it work in loading block ?

Problem solved…

Data << Ar;

Should be:

Ar << Data;