【发布时间】:2011-11-24 07:07:25
【问题描述】:
对于何时必须使用 JSON 序列化以及何时不需要(甚至不必要)来序列化对象,我感到有些困惑。
我花了几天时间尝试使用 jQuery.ajax 和 JSON 发送一个简单对象列表。 我有一个名为 Product 的类:
public class Product
{
public string Name;
public string Qnt;
public string Price;
}
以及一个返回包含 Products 的列表的 Web 方法
List<Product> p = new List<Product>();
我使用System.Web.Script.Serialization.JavaScriptSerializer 以 JSON 格式序列化此列表并将其作为字符串发送到客户端,并使用 jQuery 对其进行格式化
$.each(msg.d, function (index, Product) {
$('#details').append('<p>Name: ' + Product.Name
+ '<br />Quantity: ' + Product.Qnt
+ '<br />Price: ' + Product.Price + '</p>');
});
...它不起作用...因为在客户端,我只是得到一个长字符串(当我使用 $.each 时,它将逐个字符地解析)- 我了解到应该先解析
我花了一些时间才意识到我只需要将它作为产品对象列表返回,而不进行序列化,并且客户端会以完美的 JSON 格式获取产品列表!
编辑: 我实际上不明白的是:如果我序列化我的列表,它会返回 JSON 格式的字符串,在我使用它之前必须对其进行解析。如果我不序列化我的列表,它会返回相同的数据,但作为一个对象,而不是一个字符串,所以我可以立即使用它。 我怎么知道我必须对我的数据使用 JSON 序列化,否则它总是由框架完成?
【问题讨论】:
-
不要自己格式化 HTML。使用 jquery.tmpl。 Javascript(您编写的代码)应该用于逻辑,而不是用于渲染。