我正在创建一个Web应用程序的前端.我收到
JSON中的所有响应,解析它并将其作为html.我看了几个javascript MVC框架(即backbone.js,ember.js等),发现它们对我的简单应用程序来说太过分了.但我发现真正令人着迷的是他们都有模特.我想我可以创建javascript对象,它们将类似于模型,因为我没有这样复杂的需求,我的自定义javascript对象应该很容易.
function displayCar() {
var result = "A Beautiful " + this.year + " " + this.make
+ " " + this.model;
pretty_print(result);
}
function Car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
this.displayCar = displayCar;
}
我从服务器接收汽车作为JSON响应.那么什么是理想的方式:在循环JSON数组时创建对象或者我应该只使用解析并直接从那里显示html?
现在我的问题是我应该将JSON解析为javascript对象吗?我也不确定使用这种物体是否会有所帮助?我还想知道是否有一种直接从JSON创建自定义预定义对象的方法,因为我觉得它可能比我想要的汽车对象更有用
最佳答案 大多数现代javascript框架(jquery,angular,knockout等)都会将字符串表示解析为对象,这不是你需要担心的一个步骤.
您不需要预先定义任何内容,javascript是一种松散类型的语言 – 不需要类定义.本质上,JSON对象是属性名称到值的大型字典,您的Web框架负责将服务器端对象序列化为JSON兼容表示.
关于何时需要显示返回数据,我认为这取决于您正在构建的应用程序.如果您需要无限期地访问汽车,那么迭代它们并根据需要添加方法可能是有意义的,但是,如果您只是想显示数据,请在收到时执行.
所有这些就是说,只需从服务器返回对象,直接访问对象和属性.
这是控制器类中的一个响应URL的方法(伪代码)
public class Car {
string make;
string model;
string year;
string owner;
}
[Get("http://server/cars")]
public Car[] getCars()
{
// the repository returns an array of Car objects, which in turn are returned to the client
return myCarRepository.List(0, 25); // always page lists
}
然后在客户端上
jQuery
.get("/server/cars")
.success(function(carArray) {
// carArray is an array of car objects that has been deserialized by jquery
// you can access the properties using dot syntax
console.log("server returned " + carArray.length + " cars");
for (var i = 0; i < carArray.length; i++) {
console.log("car[" + i + "].make = " + carArray[i].make);
carArray[i].print = displayCar; // if you want to hold on to the array, and display info later, each object in the array has a print() method
}
});