Ошибка JSON_PARSING_ERROR: неожиданный символ (t) в позиции 1

#ruby-on-rails #json #ruby #curl

#ruby-на-рельсах #json #рубиновый #завиток

Вопрос:

У меня есть метод в ROR:

 params = "{'to':'#{registration_ids}','notification':{'body':'#{message}'} 'priority':'10'}"

system("curl -X POST --header 'Authorization: key=MY_KEY' --Header 'Content-Type: application/json' https://fcm.googleapis.com/fcm/send -d '#{params}'")
 

я получаю сообщение: JSON_PARSING_ERROR: неожиданный символ (t) в позиции 1

Комментарии:

1. вы могли бы попробовать это: require 'json' а затем в новой строке params = JSON.parse("{'to':'#{registration_ids}','notification':{'body':'#{message}'} 'priority':'10'}")

Ответ №1:

Ваш JSON недопустим — я бы предложил использовать jsonlint в будущем.

 require 'json'
params = {to: registration_ids, notification: {body: message}, priority:10}.to_json
system("curl -X POST --header 'Authorization: key=MY_KEY' --Header 'Content-Type: application/json' https://fcm.googleapis.com/fcm/send -d '#{params}'")
 

Вам не хватает a , между уведомлением и приоритетом. Кроме того, json действительно должен содержать двойные кавычки (см. Стандарты JSON), и вы можете сделать это, запустив .to_json метод для хэша…