【发布时间】:2014-10-13 11:27:08
【问题描述】:
我想在我的 JS 项目中使用类似 Java-POJO 的类:只有私有字段、getter 和 setter。
function Event() {
var homeTeam;
var awayTeam;
var id;
var singleBets = [];
var bet;
...
this.getHomeTeam = function(){
return homeTeam;
}
this.setHomeTeam = function(data){
homeTeam = data;
}
this.getAwayTeam = function(){
return awayTeam;
}
this.setAwayTeam = function(data){
awayTeam = data;
}
this.getId = function(){
return id;
}
this.setId = function(data){
id = data;
}
this.getSingleBets = function(){
return singleBets;
}
this.setSingleBets = function(data){
singleBets = data;
}
this.getBet = function(){
return bet;
}
this.setBet = function(data){
bet = data;
}
}
我会将类似 Java-POJO 的类转换为 JSON 字符串,以将其发送到服务器。 我不能使用 JSON.stringify(myClass) 因为这些字段是私有的。 所以我认为使用这样的递归方法......
var myJsonParse = function(data){
var result = "";
for(var propertyName in data) {
var method = propertyName;
if (method.substring(0,3)=="get"){
... data[propertyName].call() ...
}
}
return result;
}
...但在我花很多时间写它之前,我想问你是否存在一种更好的方法来转换 JSON 中的 Java-POJO 类对象。 谢谢。
更新 #1
我为自己感到羞耻!这是我的工作(但绝对是临时的)解决方案:
this.toJSON = function() {
var bettableEventsString = [];
for (var i = 0, len = bettableEvents.length; i < len; i++) {
bettableEventsString[i] = bettableEvents[i].toJSON();
}
var result = JSON.stringify({
userId: userId,
championshipDayId: championshipDayId,
championshipDayName: championshipDayName
});
result = result.substring(0, result.length-1);
result += ',\n "bettableEvents" : [ ' + bettableEventsString + " ] ";
result += " } "
return result;
}
【问题讨论】:
-
是的,这是个好主意,但我不知道如何使这个方法与内部对象递归(在我的例子中,Bet,SingleBet[])!
-
我是说如果可能的话,整个 POJO 的事情都应该用模块模式来实现。 addyosmani.com/resources/essentialjsdesignpatterns/book/… 虽然我从未尝试过 json-ize
-
你为什么在Javascript中使用getter和setter???
-
@jan 我想实现一个类似 Java 的应用程序并像处理 Java 应用程序一样处理它。我不知道这是不是个好主意!
标签: javascript json pojo stringify