Не удается записать строку JSON в Groovy / Java

#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"