環境にJSON文字列を渡そうとしています。環境からシェルモジュールへのJSON文字列の受け渡し
- name: Start {{service_name}}
shell: "<<starting springboot jar>> --server.port={{service_port}}\""
environment:
- SPRING_APPLICATION_JSON: '{"test-host.1":"{{test_host_1}}","test-host.2":"{{test_host_2}}"}'
test_host_1は172.31.00.00
test_host_2は172.31.00.00
です。しかし春のログに、私はそれを見て、二重引用符として
Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character (''' (code 39)): was expecting double-quote to start field name
at [Source: {'test-host.1': '172.31.00.00', 'test-host.2': '172.31.00.00'}; line: 1, column: 3]
を出力JSON解析例外を取得一重引用符に変換されます!!!
私は二重引用符をエスケープしようとしましたが運がありませんでした。
なぜそれが起こるか、または何らかの回避策がありますか?
私はあなたが実際に '|文字列}} 'not' | to_json}} '。 – techraf
いいえ、 'to_json'は正しいです。 OPはJSON文字列を必要としていたので、私はpython dictを作成し、それをJSONに変換しました。 –
文字列を文字列として出力することができません。それは常に入力を処理して、順序を '{" test-host.2 ":" test2 "、" test-host.1 ":" test1 "}'(JSONの場合は順序は関係ありませんそれは文字列型の環境変数に保存されます)。 Ansibleが別の答えで示唆したように式を閉じるときに暗黙的に変換すると、それをそのまま残すためにどのフィルタを使うことができますか?なぜ '|文字列 'はここでは動作しませんか?それは入力を処理するようです。 – techraf