Notez que j'ai vérifié la méthode lors de la conversion (compression) d'une chaîne de caractères JSON en JSON 1 ligne.
Les deux méthodes suivantes seront introduites.
En supposant que la chaîne de caractères JSON suivante décrite dans le fichier.
file.py
{
"Records": [
{
"database": {
"NewImage": {
"eventId": {
"S": "a4207f7a-5f04-471b-a338-1175182eaa6d"
},
"isCompleted": {
"BOOL": True
}
},
"OldImage": {
"eventId": {
"S": "a4207f7a-5f04-471b-a338-1175182eaa6d"
},
"isCompleted": {
"BOOL": False
}
}
}
}
]
}
$ python
>>> import json
>>> f = open("file.json")
>>> json.dumps(f.read()).replace("\\n","").replace("\\","").replace(" ", "")
'"{"Records": [{"database": {"NewImage": {"eventId": {"S": "a4207f7a-5f04-471b-a338-1175182eaa6d"},"isCompleted": {"BOOL": True}},"OldImage": {"eventId": {"S": "a4207f7a-5f04-471b-a338-1175182eaa6d"},"isCompleted": {"BOOL": False}}}}]}"'
Dans .replace (" "," ")
, le retrait (espace`` 4) est remplacé et supprimé. Si une chaîne de caractères différente est indentée dans la chaîne de caractères JSON, la source de remplacement de cette partie peut être modifiée.
Fondamentalement, cat <nom de fichier> | jq -c
peut être utilisé.
Cependant, jq ne peut pas gérer «True» ou «False» comme un booléen, donc si vous essayez de l'exécuter tel quel pour file.json cette fois, l'erreur suivante se produira.
$ cat file.json | jq -c
parse error: Invalid numeric literal at line 11, column 0
Par conséquent, il est nécessaire de changer à l'avance «True» en «true» et «False» en «false». Si file.json est modifié à l'avance, il peut être exécuté comme suit.
$ cat file.json | jq -c
{"Records":[{"database":{"NewImage":{"eventId":{"S":"a4207f7a-5f04-471b-a338-1175182eaa6d"},"isCompleted":{"BOOL":true}},"OldImage":{"eventId":{"S":"a4207f7a-5f04-471b-a338-1175182eaa6d"},"isCompleted":{"BOOL":false}}}}]}
c'est tout
Recommended Posts