#java #json #groovy
#java #json #groovy
Вопрос:
Итак, я пытаюсь записать следующий JSON в виде строки Java, но получаю ошибку, которую я не понимаю:
String simpleAPI_MessageInJSON = "{ "
" "action": "add", "
" "destinations": { "
" "cache": 1, "
" "batches": 1 "
" }, "
" "payload": { "
" "object_type": "profile", "
" "object_id": 366334, "
" } "
" } ";
ОШИБКА:
com.fasterxml.jackson.core.Исключение JsonParseException: неожиданный символ (‘}’ (код 125)): ожидалось, что имя поля будет заключено в двойные кавычки
Комментарии:
1. Если это groovy, используйте строку в тройных кавычках, чтобы вам не нужно было вводить escape-символы
Ответ №1:
У вас есть лишняя запятая:
" "object_id": 366334, "
Должно быть:
" "object_id": 366334 "
// / Extra comma was there.
В сообщении об ошибке говорится:
com.fasterxml.jackson.core.Исключение JsonParseException: неожиданный символ (‘}’ (код 125)): ожидалось, что имя поля будет заключено в двойные кавычки
Это не очень понятно, но мы можем понять, что это какая-то синтаксическая ошибка, и у нее есть номер строки. Просмотрев номер строки, вы можете найти синтаксическую ошибку.
Ответ №2:
Обычно проще использовать многострочные строки, если вы используете groovy для улучшения читаемости:
String simpleAPI_MessageInJSON = '''{
| "action": "add",
| "destinations": {
| "cache": 1,
| "batches": 1
| },
| "payload": {
| "object_type": "profile",
| "object_id": 366334
| }
|}'''.stripMargin()
Комментарии:
1. Да, это то, что делает stripMargin 🙂
2. упс, я был так очарован вашими красиво выровненными каналами, что полностью пропустил это.
3. Это здорово для вас … 80% полезно при 20% гипнотизме 😉
Ответ №3:
@Annubian Noob
Странно, работает с groovy:
import groovy.json.JsonSlurper
String simpleAPI_MessageInJSON = "{ "
" "action": "add", "
" "destinations": { "
" "cache": 1, "
" "batches": 1 "
" }, "
" "payload": { "
" "object_type": "profile", "
" "object_id": 366334, "
" } "
" } "
def parsed = new JsonSlurper().parseText(simpleAPI_MessageInJSON)
assert parsed.action == "add"