【发布时间】:2011-07-10 20:41:53
【问题描述】:
这是我自制的序列化类:
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[] { ',' }) + "}";
}
}
这是网络方法
[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 调用客户端
$.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);
}
});
最后,我的回调方法
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 是一个包含所有属性的字符串……属性本身是未定义的。我知道我在这里遗漏了一些简单的东西。
从服务器返回的字符串
"Person": {"FirstName":"Psuedomatt","LastName":"Tally-cox","Address":"5035 Macleay Rd SE","City":"Salem","State":"Oregon","ZipCode":"97317","Age":99}
【问题讨论】:
-
你能告诉我们从服务器返回的 JSON 字符串是什么样的吗?
-
@Jeremy Battle 更新了帖子以包含返回的字符串
-
顺便说一句,我会查看JavascriptSerializer 和JavaScriptConverter 课程,以免让自己头疼。