Using javascript, how convert to JSON, Java-POJO-like classes?
我想在我的JS项目中使用类似Java-POJO的类:仅私有字段,getter和setter。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 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),因为这些字段是私有的。
所以我想使用像这样的递归方法...
1 2 3 4 5 6 7 8 9 10 | 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
我为自己感到羞耻! 这是我的工作(但绝对是临时的)解决方案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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 += ', "bettableEvents" : [ ' + bettableEventsString +" ]"; result +=" }" return result; } |
我能想到的唯一简单方法是添加导出方法:
1 2 3 4 5 6 7 8 | this.toJSON = function() { return JSON.stringify({ homeTeam: homeTeam, awayTeam: awayTeam, id: id, // etc... }); } |