2017-02-14 3 views
2

Je reçois cette erreur lorsque j'essaie d'analyser la réponse de rest_client.JSON :: ParserError: 743: jeton inattendu dans ROR

JSON :: ParserError: 743: jeton inattendu à « {

require 'rest_client' 
require 'json' 

class Kele 
    attr_accessor :data 
    def initialize(u,p) 
     #@values = {email: u, password: p} 
     @values = '{"email": "[email protected]", "password": "password"}' 
     @headers = {:content_type => 'application/json'} 
     @data = self.post 
    end 

    def post 
     response = RestClient.post 'https://private-anon-8506c5665f-blocapi.apiary-mock.com/api/v1/sessions', @values, @headers 
    end 
end 

Dans Ruby RIR,

r = b.post 
=> <RestClient::Response 200 "{\n \"auth..."> 

JSON.parse(r.body) 
=> JSON::ParserError: 743: unexpected token at '{ 

a = Kele.new(1,2) 
=> #<Kele:0x000000042e2e18 @values="{\"email\": \"[email protected]\", \"password\": \"password\"}", @headers={:content_type=>"application/json"}, @data=<RestClient::Response 200 "{\n \"auth...">> 

a.post.body 
=> "{\n \"auth_token\":\"eyJ0eXAiOiJKV1QiLCJhhGciOiJIUzI1NiJ9.eyJhcGlfa2V5IjoiYTc2MDZkNTBhYjA3NDE4ZWE4ZmU5NzliY2YxNTM1ZjAiLCJ1c2VyX2lkIjoyMzAzMTExLCJuYW1lIjoiQmVuIE5lZWx5In0.3VXD-FxOoxaGXHu6vmL8g191bl5F_oKe9qj8Khmp9F0\",\n \"user\":\n  {\n   \"id\":2307245,\n   \"email:\"[email protected]\",\n   \"created_at\":\"2015-08-11T16:31:08.836-07:00\",\n   \"updated_at\":\"2015-11-04T13:13:32.457-08:00\",\n   \"facebook_id\":null,\n   ...,\n   \"gender\":null\n  }\n}" 

J'ai essayé en utilisant HTTParty ainsi:

require 'HTTParty' 
class Kele 
    include HTTParty 
    def initialize(email,password) 
     @options = {query: {email: email, password: password}} 
    end 

    def post 
     self.class.post('https://private-anon-8506c5665f-blocapi.apiary-mock.com/api/v1/sessions', @options) 
    end 
end 

I toujours obtenir cette erreur:

JSON.parse(a.post.body) 
=> JSON::ParserError: 743: unexpected token at '{ 

Répondre

1

Dans votre deuxième exemple, r n'est pas JSON, il s'agit d'un objet RestClient :: Response et ne peut pas être analysé. Vous devez analyser le r.body du RestClient :: Response, comme vous l'avez référencé avec a.post.body dans votre deuxième exemple.

r = b.post   # => <RestClient::Response 200 "{\n \"auth..."> 
JSON.parse(r)  # => JSON::ParserError: ... 
r.body    # => "Some valid JSON string" 
JSON.parse(r.body) # => Parses "Some valid JSON string" 
+0

Merci, mais je n'essayer, et il jette la même erreur. J'ai juste essayé d'utiliser HTTParty, et ça donne la même erreur. – Leogoesger

0

Je ne suis pas sûr que tous les cas d'erreur 743 de JSON est le même, mais dans mon cas est causée par le point final de l'API. C'était légèrement différent de celui que je suppose utiliser. Donc, je vérifierais d'abord votre URL de point de terminaison API si vous obtenez cette erreur, et assurez-vous que vous utilisez le bon.

Dans ce cas,

Je devrais utiliser https://www.bloc.io/api/v1/sessions