Olá, Marcio.
O que você quer dizer com foreach em um objeto genérico? Antes de deserealizar o objeto está vazio, você só tem uma string até então, o "conversor" é do tipo genérico e aguarda alguma classe.
Caso não queira criar classes, você pode utilizar a dynamic objetc e
ExpandoObject.
Vale lembrar que muitas vezes utilizando serviços de terceiros, os nomes de campos, envio e retorno, pode não ser claro devido a abreviações de campos, falta de padronização, etc. Também decoramos classes por esse motivo.
JsonConvert exige decorate para entender o arquivo a ser trabalhado, algumas formas de serealização/deserealização não exigem o decorate, pelo menos em xml.
Não sei se essas informações respondem sua dúvida, caso não tenha, detalhe mais o que você quis dizer, se possível com um exemplo.
Abraço