Javascript のおかげで、行番号付きのテキストエリアで構成されるフォームがあります。jsonlint.org と同じように、このフォームを使用して JSON を検証します。ユーザーが JSON を入力し、検証を押すと、回答が返されます。私は自分でファイルを解析していません.pythonコマンドを使用しています:
python -m json.tool input.json
ご覧のとおり、このコマンドはファイルを受け取ります。だから私がやっていることは次のとおりです:
- フォームデータをファイルに書き込む
- このコマンドを実行して出力を取得します
- エラーがない場合は、jsonlint.org のように「有効な JSON」を画面に出力します。それ以外の場合は、プログラムによって与えられたエラー メッセージを表示します。「エラー .... 行 x 列 y (文字 z)」
Python プログラムによって指定された行番号は、ファイル内の行番号に対応し、textarea の行番号には対応していません。Javascript の行番号が役に立たなくなります。テキストエリアの幅とその中で使用しているフォントに依存し、ファイル内の行番号がどのように設定されているかを理解すること(私は本当に理解していません)
2 の間の通信をどのように見つけることができますか?
ありがとう
ただ気づいたこと:私のテキストエリアは、SOFで質問するときに入力したものとまったく同じに見えます:D
----- ベンへの応答として編集 ----- 非常に興味深い。「wrap」というテキストエリアのオプションを使用して、私が求めた機能を実装しました。「ソフト」に設定しました:
<form method='post' action='/exec' id="jsonform" >
<textarea wrap="hard" name="json" id="json_input" rows="20" cols="150" placeholder="Enter JSON to validate.">{{ resp | safe }}</textarea>
<div align="center">
<input type='submit' value='Validate' id="button" >
</div>
</form>
ただし、これにより有効な JSON が無効になります。Pythonモジュールは区切り線の前に引用符があることを期待しているため...したがって、 textarea="soft" を使用してフォームからのデータをバリデーターにフィードし、 textarea="hard" を使用してフォームからのデータを表示する必要があります。しかし、私には1つのフォームがあります。また、あなたがくれた投稿に記載されているコードを試しましたが、何らかの理由で機能しませんでした。そして、私はJavascriptを知らないので(それを変更する必要があります)、コードをデバッグしたり適応させたりすることができませんでした... HELLLP