这是一个非常直截了当的问题,我正试图弥合我的知识差距。
很简单,应用程序的工作方式如下: 1:i:Web应用程序创建值的哈希值 1:ii:将此哈希转换为JSON 1:iii:通过POST将JSON发送到另一个应用程序 这是主要问题
2:i:其他网络应用收到JSON,反序列化并转回对象。
@hostURL = 'http://127.0.0.1:20000/sendJson'
1我已经完成了i和ii。不太难。
@myHash = HASH.new
@myHash =
{
"myString" => 'testestestes'
"myInteger" => 20
}
@myJsonHash = @myHas.to_json
在我的应用程序中发送帖子请求如下所示:
res = Net::HTTP.post_form(URI.parse(@hostURL),
{'myString'=>'testestestest, 'myInteger' => 20})
但是我不知道如何通过post发送JSON哈希。
至于2:
@request = UserRequest.new({:myString => params[:myString], :myInteger => params[:myInteger] })
if @request.save
#ok
puts "OBJECT CREATED AND SAVED"
else
#error
puts "SOMETHING WENT WRONG WITH OBJECT CREATION"
这就足够了,因为我听到Rails在收到请求时会自动反序列化。
旁注:答案应该是什么?
这是2个网络应用程序通信,所以返回一些HTML会很糟糕。可能是一个数字响应? 200? 404?
在回复数据而不是回应浏览器时是否有任何行业标准
答案 0 :(得分:2)
您希望使用与from_json
相反的to_json
。这将使用JSON发送对象并将其转换为ruby,因此您的模型或者保存它将会理解。
@post = Post.new
@post.name = "Hello"
#this converts the object to JSON
@post.to_json
@post = You want to use `from_json` which does the opposite of `to_json`. This will take the object being sent in JSON and convert it into ruby so your model or however you save it will understand.
@post = Post.new
@post.name = "Hello"
#this converts the object to JSON
@post.to_json
@post = {
"name" => 'Hello'
}
#this puts it back into JSON
@post.from_json
@post.name = "Hello"
@post.to_json
将JSON(服务器端)发送到通常通过JavaScript或AS3完成的控制器。
您应该解释您的发布方式。从表单,链接。这很重要;但是,最简单的方法是使用jQuery。
$.ajax({
type: 'POST',
url: url,
data: data,
success: success,
dataType: json
});
在这里,您希望url
成为发布网址,例如app.com/posts(您的域名,然后是控制器),然后数据应采用JSON格式,例如:
data = {
"name" => 'Hello'
}