2016-04-26 4 views
0

Ich baue eine REST-API in JAVA und C# und ich fragte mich, wie ich Daten an diese Dienste weitergeben sollte.Übergeben Sie JSON-Objekt vs JSON-Zeichenfolge in HTTP POST

Was ich kenne als der richtige Weg ist JSON-Objekt, da die Daten in der POST-Körper zu senden:

{name:'Dor'} 

aber ich habe auch einen String und analysieren, um die JSON in meinem Dienst passieren kann:

'{name:'Dor'}' 

Was ist der bevorzugte Weg vom Leistungsfaktor? oder irgendwelche anderen Faktoren?

+0

Server muss die Anfrage Payload sowieso analysieren, also besser für die erste Lösung entscheiden. – sp00m

+0

@ sp00m Wird die Nutzlast, die als String analysiert wird, schneller als JSON? –

+0

Ich denke ja, aber du musst den JSON danach trotzdem parsen. Das bedeutet, dass Sie * time_parsing_string + time_parsing_json * anstelle von * time_parsing_json * haben. Außerdem sieht es so aus [vorzeitige Optimierung] (http://programmers.stackexchange.com/a/80092/72730) ';)' – sp00m

Antwort

0

Wenn Sie die json-Daten über jquery senden müssen, müssen wir stringify verwenden, sonst würden die Daten in ein key = value-Paar serialisiert.

So können Sie das Json-Objekt nicht direkt über Jquery Ajax-Methode senden. Wie es hinter der Haube arbeitet:

In $ Schnipsel Funktion, wenn wir Daten als

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

liefern, wenn wir also Daten wie

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

bieten, schließen, was wir können, ist, dass , wir können json object nicht direkt über jquery übergeben, wir können nur json string senden. Hoffe das klärt jeden auf.

+0

Da der HTTP-Anfragetext letztlich eine Folge von Bytes ist, muss Ihr JS-Objekt trotzdem in JSON serialisiert werden, wenn die Anfrage erstellt wird, also ist es nicht "besser" und hat auch keine bessere Leistung nicht sehen, was genau unter der Haube ausgeführt wird – CouchDeveloper

+0

überprüfen Sie meine oben modifizierten ans. –