FJsonSerializer::Deserialize bug with TArray

I ended up hacking my way around it. It seems like Unreal’s Json converter can’t handle arrays atm. This is what I ended up doing;

TArray<FString> serverListSplit;
FString left, right, current;
current = someServers;
current.RemoveFromStart("["); current.RemoveFromEnd("]");
while (current.Split("}", &left, &right))
{
	left += "}";
	right.RemoveFromStart(",");
	current = right;
	serverListSplit.Add(left);
}

TArray<FWServer> servers;
for (int i = 0; i < serverListSplit.Num(); ++i)
{
	TSharedPtr<FJsonObject> JsonParsed = MakeShareable(new FJsonObject());
	TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(serverListSplit[i]);
	if (FJsonSerializer::Deserialize(JsonReader, JsonParsed))
	{
		auto item = JsonParsed;

		FWServer s = FWServer();
		s.mIpAddress		= item->GetStringField("ipAddress");
		s.mPort			= item->GetNumberField("Port");
		s.mServerName	= item->GetStringField("ServerName");
	}
}
1 Like