2013-03-04 6 views
0

내 문제는 이스케이프 문자로 인해 JSON이 무효화된다는 것입니다. JSON을 Rails 서버에 보내고 있지만 도착하면 일부 이스케이프 문자가 생깁니다.JSON을 레일스로 보내기

내 restfull 클래스에서 해결할 수있는 것이 있습니까? 아니면 서버 측에서 해결해야 할 부분이 있습니까? 여기

[session={"password":"********","email":"********@omobile.com.br"}] 

내가 보내고있어 JSON입니다 그리고 여기 서버에 표시되는 JSON 이잖아 로그입니다 :

{"session"=>"{\"password\":\"********\",\"email\":\"********@omobile.com.br\"}"} 

내가 내 JSON을 보낼 수있는 이러한 여러 가지 방법을 시도했습니다 그 결과는 동일합니다 : 당신이 게시 된 문자열 중 어느 것도 ACTU이기 때문에 무엇을 어떻게하는 것이 엉망입니다

JSONObject object = new JSONObject(); 
object.accumulate("email", username); 
object.accumulate("password", password); 
String jsonString = object.toString(); 

Session session = new Session(); 
session.setEmail(username); 
session.setPassword(password); 
Gson gson = new Gson(); 
String jsonString = gson.toJson(session, Session.class); 
+1

Android 앱에서 JSON 문자열을 보내도록 코드를 게시 할 수 있습니까? –

+0

감사합니다 남자 나는이 두 가지를 tryed했습니다 결과는 여전히 동일합니다 –

+0

그리고 비밀 번호 및 이메일 주소와 같은 개인 정보를 게시하지 마십시오. 대신에'********'를 사용하십시오. –

답변

1

JSON. 첫 번째 것은 실제로 무엇인지 모릅니다. 두 번째 것은 Ruby 측에서 Ruby 해시를 사용한다는 의미이며, 키 "세션"은 JSON 인코딩 해시를 나타냅니다.

코드를 게시하지 않아서 무슨 일이 일어날 지 알 수 없으므로 서버가 양식 인코딩 된 요청 본문, 멀티 파트 요청 본문 또는 JSON 인코딩 된 코드를 직접 기대할 수 있는지 여부를 알 수 없습니다 목적. mulipart 봉투의 일부로서, 또는 URL을있는 그대로, 또는

{"password": "********","email":"********@omobile.com.br"} 

내가 말했듯이,이 통과 할 수 있습니다

난 당신이 내가 볼 수있는 유일한 JSON이 부분임을 고려할 -encoded. 형식은 실제로 서버에서 설정됩니다. 서버

public class GsonSendToSinatra { 

    private static class Session { 
     @SuppressWarnings("unused") 
     String username, password; 
    } 

    public static void main(String[] args) throws Exception { 
     Session session = new Session(); 
     session.username = "[email protected]"; 
     session.password = "qwerty1234"; 

     Gson gson = new Gson(); 

     String responseText = Request.Post("http://localhost:4567/echo") 
      .bodyString(gson.toJson(session), ContentType.APPLICATION_JSON) 
      .execute() 
      .returnContent() 
      .asString(); 

     System.out.println(responseText); 
    } 
} 

와시나 : 예를 들어 나는 빠른 아파치 HttpClient를를 사용하여 테스트했다

require 'sinatra' 
require 'json' 

post '/echo' do 
    content_type "text/plain" 
    layout false 

    session = JSON.parse request.body.read 

    session.map {|k,v| "#{k}: #{v}\n"} 
end 

을 나는이 예제는 알아낼 도움이되기를 바랍니다 무엇 HTTP를 대화의 움직이는 부품이 어떻게 그들을 결합 할 수 있습니다.

+0

나는 JSON과 Gson Frameworks를 사용하여 j2EE 서버와 comunicate하기 위해 동일한 문자열과 접근법을 사용했고, 나는 항상 이것을 해냈습니다. 이 문제 –

+1

클라이언트와 서버가 모두 동일한 프로토콜에 동의하면 모두 작동합니다.) 클라이언트와 서버를 우리에게 보여 주면 ... – Raffaele

+1

@Raffaele * "... Jon Skeet이 배지를 얻지 못하기 때문에 배지는 Jon Skeet을 달성합니다. "* :-D –

관련 문제