Here is my Serializing family class:
public class JsonBuilder { private StringBuilder json; public JsonBuilder() { json = new StringBuilder(); } public JsonBuilder AddObjectType(string className) { json.Append("\"" + className + "\": {"); return this; } public JsonBuilder Add(string key, string val) { json.AppendFormat("\"{0}\":\"{1}\",", key, val); return this; } public JsonBuilder Add(string key, int val) { json.AppendFormat("\"{0}\":{1},", key, val); return this; } public string Serialize() { return json.ToString().TrimEnd(new char[] { ',' }) + "}"; } }
Here is the web method
[WebMethod] public static string GetPersonInfo(string pFirstName, string pLastName) { var json = new JsonBuilder().AddObjectType("Person"); json.Add("FirstName", "Psuedo" + pFirstName).Add("LastName", "Tally-" + pLastName); json.Add("Address", "5035 Macleay Rd SE").Add("City", "Salem"); json.Add("State", "Oregon").Add("ZipCode", "97317").Add("Age", 99); return json.Serialize(); }
Ajax Client Call
$.ajax( { type: "POST", url: "Default.aspx/GetPersonInfo", data: JSON.stringify(name), contentType: "application/json; charset=uft-8", dataType: "json", success: function (rsp) { SetPerson(rsp); }, error: function (rsp) { alert(rsp); } });
And finally, my callback method
function SetPerson(rsp) { $('#fName').val(rsp.d.FirstName); $('#lName').val(rsp.d.LastName); $('#address').val(rsp.d.Address); $('#city').val(rsp.d.City); $('#state').val(rsp.d.State); $('#zip').val(rsp.d.ZipCode); SetPerson(rsp.d.Age); }
rsp.d is a string containing all the properties ... the properties themselves are undefined. I know that I am missing something simple here.
The returned string from the server
"Person": {"FirstName":"Psuedomatt","LastName":"Tally-cox","Address":"5035 Macleay Rd SE","City":"Salem","State":"Oregon","ZipCode":"97317","Age":99}