メール内の JSON 文字列を解析する Groovy で書かれた小さなツールを開発しています。これらの JSON 文字列の一部には、エスケープされた引用符を含む JSON 値が含まれています。
例えば:
{
"hello": "world with \"quotation marks\""
}
これらの文字列を解析するために、Groovy の JsonSlurper を使用しています。次のコードは、私の問題を示しています。
import groovy.json.JsonException
import groovy.json.JsonSlurper
try {
print new JsonSlurper().parseText('''
{
"hello": "world with \"quotation marks\""
}
''')
} catch (JsonException | IllegalArgumentException e) {
print e
}
ライブ デモについては、https://groovyconsole.appspot.com/script/6193189027315712を参照してください。
このコードを実行すると、次の例外がスローされます。
groovy.json.JsonException: expecting '}' or ',' but got current char 'q' with an int value of 113 The current character read is 'q' with an int value of 113 expecting '}' or ',' but got current char 'q' with an int value of 113 line number 3 index number 35 "hello": "world with "quotation marks"" ............................^
したがって、引用符のエスケープは JsonSlurper によって無視されます。残念ながら、入力、つまり JSON 文字列を制御することはできません。したがって、そのような JSON 文字列を解析してマップまたはその他の適切なデータ構造にする方法を見つける必要があります。