JSON - Slashes and application type..refactoring

Question!

My code works (yeah!) which sends json to a server.. would appreciate any thoughts on refactoring

1) My C# code sends this json to the server

{\"firstName\":\"Bill\",\"lastName\":\"Gates\",\"email\":\"[email protected]\",\"deviceUUID\":\"abcdefghijklmnopqrstuvwxyz\"}

Which I have to get rid of the slashes on the server side....not good.

2) I'm using application/x-www-form-urlencoded and probably want to be using application/json

Person p = new Person();
            p.firstName = "Bill";
            p.lastName = "Gates";
            p.email = "[email protected]";
            p.deviceUUID = "abcdefghijklmnopqrstuvwxyz";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(targetUri + "newuser.php");
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            //TODO request.ContentType = "application/json";

            JavaScriptSerializer serializer = new JavaScriptSerializer();
            string s = serializer.Serialize(p);
            textBox3.Text = s;

            string postData = "json=" + HttpUtility.UrlEncode(s);

            byte[] byteArray = Encoding.ASCII.GetBytes(postData);

            request.ContentLength = byteArray.Length;
            Stream dataStream = request.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close ();

            WebResponse response = request.GetResponse();
            //textBox4.Text = (((HttpWebResponse)response).StatusDescription);
            dataStream = response.GetResponseStream ();

            StreamReader reader = new StreamReader(dataStream);
            string responseFromServer = reader.ReadToEnd ();
            textBox4.Text += responseFromServer;

            reader.Close ();
            dataStream.Close ();
            response.Close ();

PHP Code on Server:

$inbound = $_POST['json'];

// this strips out the \
$stripped = stripslashes($inbound);

$json_object = json_decode($stripped);
echo $json_object->{'firstName'};
echo $json_object->{'lastName'};
echo $json_object->{'email'};
echo $json_object->{'deviceUUID'};


Answers

Got it

There were 2 problems:

The PHP server was escaping incoming data, so I had to use stripslashes.

http://nz.php.net/magic_quotes

Also hovering over the property in VS showed slashed but a

Debug.Write(s);

showed:

[{"categoryid":"1","name":"funny","serverimageid":"1","dateuploaded":"2008-11-17 16:16:41","enabled":"\u0001"},{"categoryid":"2","name":"happy","serverimageid":"2","dateuploaded":"2008-11-17 16:17:00","enabled":"\u0001"},{"categoryid":"3","name":"sad","serverimageid":"3","dateuploaded":"2008-11-16 16:17:13","enabled":"\u0001"}]

Thanks everyone.



JSON.NET is great and well worth working out - it does a few things better than JavaScriptSerializer, but I know for a fact that JavaScriptSerializer (and any other JSON serializer) will not output identifiers with slashes. It'd be invalid JSON.





This video can help you solving your question :)
By: admin