jqを使用して間違ったJSONを解析しますか?

jqを使用して間違ったJSONを解析しますか?

jqは間違ったJSONを解析できますか? :

[2023.06.07-21.58.47] StatManagerLog: {
    "RoundState":
    {
        "State": "Starting",
        "Timestamp": "2023.06.07-21.58.47"
    }
}
[2023.06.07-21.58.47] StatManagerLog: {
    "RoundState":
    {
        "State": "StandBy",
        "Timestamp": "2023.06.07-21.58.47"
    }
}

理想的には、各StatManagerLogオブジェクトはjqによって読み込まれます。

jqがこれをどのように実行するのかわからないようです。私は試してみましたが、-Rjqでコマンドを実行する機能が失われました。これは可能ですか、それとも有効なJSONにするために最初にファイルを前処理する必要がありますか?

ベストアンサー1

私はそれについて特に慣れていませんが、jqこの答えが役に立つことを願っています。

固定された構文に従ってファイルを解析するパーサーの作成は、しばしば複雑で痛みを伴う作業です。

エラーを修正するパーサーを書くことはまったく異なるレベルです。どれくらい複雑なのか想像すらできません!

表示される入力を「修正」するさまざまな方法について考えてみましょう。

たぶんこれはand[2023.06.07-21.58.47]の代わりに、つまり6つの項目の配列を意味するかもしれません。それでは、残りはどうすればいいですか?,.-[2023,06,07,21,58,47]

たぶんすべてを[2023.06.07-21.58.47] StatManagerLog:捨てるべきですか?これにより、ファイルは単一のJSONではなく、jqそれを処理できるように見える複数のリンクされたJSONファイルです。

たぶんこれが意味するの"[2023.06.07-21.58.47] StatManagerLog":は、キーの周りの二重引用符が欠けていて、{ }ファイル全体をカプセル化する大きな外部ペアがありません。

私は他の可能性があると確信しており、このサイズを変更するとファイルを有効なJSONにすることができます。パーサーはどちらを選択するかわかりません。

これは音声言語に似ています。文章全体を明確に聞こえなかったことが何度か考えてみて、脳が聞こえなかった部分を自動的に矯正できないので、もう一度尋ねてみてください。おそらく、文章を修正する方法を2つ以上想像できるからです。結果の意味。

簡単に言えば、データを修正する方法と元の意図が何であるかを知っている人は、パーサーがそれを理解する機会がありません。入力する前に、一部のテキスト処理ツール(sedなど)awkを使用してcut編集してくださいjq。または、このデータをエクスポートする人が正しいJSONをエクスポートするように変更してください。

おすすめ記事