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.