Lidando com NIL em JSON::Qualquer em Crystal Lang
Um dos desafios ao desenvolver com o Crystal é que ele não é tão tolerante com os tipos de dados como, digamos, Python ou Ruby.
nulo vai mantê-lo ocupado.
A seguinte mensagem de erro:
elenco de Nil a String falhou, em /usr/share/crystal/src/json/any.cr:220:5:220
pode ser resolvido por:
# fundido a fio, ENTÃO verifique se é nulo
if !(shopify_data[spid]["billing_address"]["address2"].as_s? == nil)
nome = shopify_data[spid]["endereço_de_facturação"]["endereço2"].as_s
além disso
nome = "fallback_failed [taxgod]"
tg_info << "shopify_data[spid][|"billing_address\"][|"address2\"] for " + spid + " is nil "
final
(Sendo o acima um corte da minha aplicação interna taxgod, que fala com o Shopify API - que irá retornar dados JSON, e alguns destes dados JSON podem estar vazios / nulos).
Como o caso é, use as_s? para lançar o JSON::Qualquer tipo para uma string ou nulo, e depois verifique se é nulo. Se não for nulo, então você pode proceder com um as_s (que aumentará se o valor subjacente for nulo), e definir um valor alternativo se for nulo.