2016-04-26 67 views
0

我正在用JAVA和C#构建REST API,我想知道应该如何将数据传递给这些服务。在HTTP POST中传递JSON对象vs JSON字符串

什么我熟悉的正确方法是发送JSON对象作为POST主体中的数据:

{name:'Dor'} 

,但我也可以传递一个字符串和解析JSON在我的服务:

'{name:'Dor'}' 

性能因素的最佳方式是什么?或任何其他因素?

+0

无论如何,服务器将不得不分析请求负载,所以更好地选择第一个解决方案。 – sp00m

+0

@ sp00m将字符串解析为负载比JSON更快吗? –

+0

我想是的,但无论如何你必须解析JSON。这意味着你将只有* time_parsing_string + time_parsing_json *而不是* time_parsing_json *。此外,它看起来像[过早优化](http://programmers.stackexchange.com/a/80092/72730)';)' – sp00m

回答

0

基本上,如果你需要通过jQuery发送json数据,那么我们需要使用stringify,否则数据将被序列化为key = value对。

所以,你不能直接通过jquery ajax方法发送json对象。 它是如何工作的篷子后面:

在$阿贾克斯的功能,如果我们提供的数据作为

data :{key1:"value1", key2:"value2"} 
is serialized to key1=value1&key2=value2 

如果我们提供的数据作为

data :'{key1:"value1", key2:"value2"}' or JSON.stringify({key1:"value1", key2:"value2"}) 
is sent as {key1:"value1", key2:"value2"} 

所以,我们可以得出结论的是, ,我们不能直接通过jquery传递json对象,我们只能发送json字符串。希望这能澄清每个人。

+0

由于HTTP请求体最终是一个字节序列,所以当请求被创建时,你的JS对象必须被序列化为JSON,所以它不是“更好”,也不是更好的性能。没有看到引擎盖下正在执行什么。 – CouchDeveloper

+0

检查我的上述修改后的答案。 –