Existem dados JSON que contêm alguns valores numéricos. Como converter todos os números em strings? (enrole com aspas)
Exemplo:
{
"id":1,
"customer":"user",
"plate":"BMT-216-A",
"country":"GB",
"amount":1000,
"pndNumber":20000,
"zoneNumber":4
}
Deve se tornar
{
"id":"1",
"customer":"user",
"plate":"BMT-216-A",
"country":"GB",
"amount":"1000",
"pndNumber":"20000",
"zoneNumber":"4"
}
Redirecione para um novo arquivo e mova-o para o nome do arquivo original.
Para uma conversão mais completa de números em estruturas não planas em strings, considere
Isso examinaria todos os valores recursivamente no documento fornecido e selecionaria aqueles que são números. Os valores selecionados são então convertidos em strings. Também, estritamente falando, examinaria as chaves, mas como elas não podem ser números simples em JSON, nenhuma chave seria selecionada.
Exemplo:
Para citar adicionalmente o
null
, altere oselect()
paraaqui está uma solução fácil baseada no
jtc
utilitário unix:se você gosta de aplicar alterações diretamente no arquivo json, use o
-f
switch, assim:A solução proposta funcionará corretamente com jsons estruturados arbitrários, por exemplo:
-w'<>n:'
-w'<any>b:'
Além disso, a tarefa inversa (tirar as aspas de todos os números) é facilmente conseguida de maneira semelhante: digamos,
file.json
já está "entre aspas", para retirar as aspas de todos os números:UPDATE : a última versão do
jtc
implementa agora templates e namespaces. Com isso, nenhuma invocação de shell externo é necessária:jtc
guia do usuário: https://github.com/ldn-softdev/jtc/blob/master/User%20Guide.mdCitaria qualquer coisa que não fosse citada e não fosse
[]{}:,whitespace
, então citaria números,true
,false
enull
.Citaria especificamente o que corresponde à especificação de um número json e que ainda não está entre aspas.
Esses fazem uma tokenização exata com base na especificação JSON, não é uma aproximação.
Eu tentei com o método abaixo e funcionou bem.
Eu canalizei 2 vezes tentei até o meu nível para reduzi-lo
Comando:
Resultado: