I'm not sure if this is intentional or not, but the CustomData property for CatalogItem is a string of an object instead of a Dictionary.
It seems like the CatalogItem CustomData should be parsed to a Dictionary<string, string> just like the ItemInstance CustomData is.