2013-03-04 64 views
0

我的问题是转义字符使我的JSON无效。我将我的JSON发送给Rails服务器,但是当它到达时,它会获得一些转义字符。发送JSON到Rails

有什么我可以做的解决这个在我的restfull类或是它的东西要纠正在服务器端?

这里是我发送JSON,

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

这里是出现在服务器上的JSON这就是日志:

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

我已经尝试这些不同的方式来送我的JSON其结果是一样的:

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字符串吗? – 2013-03-04 23:22:03

+0

谢谢你我已经尝试过这两种方式,结果仍然是一样的 – 2013-03-04 23:29:20

+0

不要发布你的私人信息,如密码和电子邮件地址。改用'********'。 – 2013-03-04 23:29:23

回答

1

所发生的是乱七八糟的,因为无论是你贴的字符串是ACTU盟友JSON。第一个实际上我不知道它是什么,而第二个可能意味着在Ruby方面你有这个Ruby散列,其中关键“会话”是指JSON编码的散列。

因为您没有发布代码,所以我们无法确定网络上发生了什么,所以我们无法确定您的服务器是否期望表单编码的请求主体,多部分代码或直接使用JSON编码目的。

我希望你能考虑我看到的唯一JSON是部分:

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

正如我所说的,这可以原封不动的使用,或作为mulipart信封的一部分,甚至网址-encoded。格式确实在服务器上建立。比如我做了使用Apache的HttpClient快速测试:

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); 
    } 
} 
在服务器上

和西纳特拉:

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

我已经使用相同的字符串和方法与j2ee服务器使用JSON和Gson框架交流,我一直工作这是我第一次这个问题 – 2013-03-04 23:43:14

+1

当客户端和服务器都在同一协议上达成一致时,一切正常;)如果您向我们展示您的客户端和您的服务器... – Raffaele 2013-03-05 00:13:22

+1

@Raffaele *“...因为Jon Skeet没有达到徽章,徽章达到Jon Skeet “* :-D – 2013-03-05 02:00:51