0
votes

Convertir les données du fichier texte en tableau JSON à bash

Je souhaite une sortie dans le format de matrice JSON ci-dessous avec la commande sur la plate-forme Linux / Bash. Peut-on aider tous les données

dans le fichier texte p> xxx pré>

attendre la sortie: strong> p>

{array : 
   [
     {test:test},
     {test1:test1}, 
     {test4:test4}
   ]
}


6 commentaires

Comment ces données ont-elles été générées?


Notez que " n'est pas " . Il suffit de lire la ligne d'entrée par ligne avec : comme séparateur et sortie les dans le formar {" Quelque chose ":" quelque chose "} alors joni les lignes avec virgule. Comment lire une ligne de fichier par ligne Comment rejoindre des lignes avec Delimètre


Votre sortie n'est pas valide JSON ...


J'ai apporté des changements dans la question. S'il vous plaît vérifier si cela a plus de sens


Désolé, ce n'est pas la façon dont Stackoverflow fonctionne. Les questions de la forme "Je veux faire x, veuillez me donner des conseils et / ou un code d'échantillon" sont considérés comme étant hors sujet. Veuillez visiter le centre d'aide et lire Comment Demander , et surtout lire Pourquoi "peut-il m'aider quelqu'un?" pas une question réelle?


Votre sortie attendue n'est toujours pas valide JSON. Si vous voulez quelque chose de JSON - comme, mais pas, ne l'appelez pas JSON.


3 Réponses :


2
votes

Utilisation de JQ ligne de commande JSON Parser: xxx

Les options rs laisse jq lisez le tout fichier comme une chaîne.

Le script divisé S Cette chaîne en morceaux afin d'avoir le format attendu.


1 commentaires

Puis-je ajouter une nouvelle paire (clé / valeur) au tableau existant "Test5": "Test5" {"Array": [{"Test": "Test"}, {"Test1": "Test1"}, {"Test4 ":" Test4 "}, {" Test5 ":" Test5 "}]}



0
votes

En supposant que vous souhaitez une sortie JSON réelle:

$ jq -nR '{array: (reduce inputs as $line ([]; . + [$line | split(":") | {(.[0]):.[1]}]))}' input.txt 
{
  "array": [
    {
      "test": "test"
    },
    {
      "test1": "test1"
    },
    {
      "test4": "test4"
    }
  ]
}


0 commentaires

0
votes

Créer un JSON fonctionne mieux avec un outil JSON dédié pouvant également donner un sens au texte brut.
xidel est un tel outil.

xpath : xxx

( x: lignes ($ RAW) est un raccourci pour tokenize ($ cru, '\ r \ n? | \ n ') , qui crée une séquence de toutes les lignes.)

xquery: xxx

Voir aussi Ce Testeur en ligne Xidel.


0 commentaires