Jq: Usar `try` ou`? `Quebra o operador de atualização (` | = `)

Criado em 25 jan. 2018  ·  3Comentários  ·  Fonte: stedolan/jq

Usar try ou ? no RHS do operador |= remove o caminho que está sendo atualizado, mesmo se a expressão de atualização funcionar corretamente sem qualquer tratamento de erro.

Estou usando jq-1.6rc1-1-g61edf3f

Programa de exemplo:

{"number":"1234"}|(.number|=23),(.number|=23?)

Saída esperada:

{
  "number": 23
}
{
  "number": 23
}

Produção real:

{
  "number": 23
}
{}

jq 1.5 se comporta conforme o esperado.

bug

Comentários muito úteis

Este problema ainda está presente na versão estável jq-1.6 .

Tentei os seguintes casos de teste:
{"price": "$23,000"} | .price |= (try 2 catch null)
{"price": null} # expected 2

A saída está correta se o operador de atualização ou try-catch for removido:
{"price": "$23,000"} | . + {price: (try 2 catch null)}
{ "price": 2}
{"price": "$23,000"} | .price |= 2
{ "price": 2}

Jq-1.5 funciona conforme o esperado. Existe alguma atualização sobre este problema? Está relacionado à mudança documentada de comportamento do operador de atualização?

Todos 3 comentários

Obrigado pelo relatório.

Este problema ainda está presente na versão estável jq-1.6 .

Tentei os seguintes casos de teste:
{"price": "$23,000"} | .price |= (try 2 catch null)
{"price": null} # expected 2

A saída está correta se o operador de atualização ou try-catch for removido:
{"price": "$23,000"} | . + {price: (try 2 catch null)}
{ "price": 2}
{"price": "$23,000"} | .price |= 2
{ "price": 2}

Jq-1.5 funciona conforme o esperado. Existe alguma atualização sobre este problema? Está relacionado à mudança documentada de comportamento do operador de atualização?

Corrigido por @wtlangford com e74eab8.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

thelonious picture thelonious  ·  4Comentários

rokka-n picture rokka-n  ·  4Comentários

sonots picture sonots  ·  3Comentários

rubensayshi picture rubensayshi  ·  3Comentários

tischwa picture tischwa  ·  4Comentários