Beachten Sie, dass ich die Methode beim Konvertieren (Komprimieren) einer JSON-Zeichenfolge in einzeiliges JSON überprüft habe.
Die folgenden zwei Methoden werden vorgestellt.
Angenommen, die folgende in der Datei beschriebene JSON-Zeichenfolge.
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}}}}]}"'
In .replace (" "," ")
wird der Einzug (Leerzeichen`` 4) ersetzt und gelöscht. Wenn in der JSON-Zeichenfolge eine andere Zeichenfolge eingerückt ist, kann die Ersatzquelle für diesen Teil geändert werden.
Grundsätzlich kann cat <Dateiname> | jq -c
verwendet werden.
Jq kann jedoch "True" oder "False" nicht als Booleschen Wert behandeln. Wenn Sie also diesmal versuchen, es wie für file.json auszuführen, tritt der folgende Fehler auf.
$ cat file.json | jq -c
parse error: Invalid numeric literal at line 11, column 0
Daher ist es notwendig, "True" im Voraus in "True" und "False" in "False" zu ändern. Wenn file.json im Voraus geändert wird, kann es wie folgt ausgeführt werden.
$ 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}}}}]}
das ist alles
Recommended Posts