JS 프로젝트에서 Java-POJO와 같은 클래스를 사용하고 싶습니다. 개인 필드, getter 및 setter 만 사용할 수 있습니다.자바 스크립트를 사용하여 JSON, Java-POJO와 같은 클래스로 변환하는 방법은 무엇입니까?
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 문자열로 변환하여 서버로 전송합니다. 필드가 private이기 때문에 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;
}
생각 ...하지만 내가 그것을 쓰는 많은 시간을 할애하기 전에 나는 자바 POJO와 같은 변환 할 수있는 더 좋은 방법이 존재하는 경우를 요청합니다 JSON의 객체. 감사합니다.
업데이트 # 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;
}
어떻게 폐쇄에 대해? – argentum47
예, 좋은 생각입니다. 그러나이 메소드를 내부 객체로 재귀 적으로 만드는 방법을 모르겠습니다. (예제에서는 Bet, SingleBet [])! – valerio
가능하다면이 POJO 전체가 Module 패턴으로 구현되어야한다고 말하고있었습니다. http://addyosmani.com/resources/essentialjsdesignpatterns/book/#modulepatternjavascript 나는 결코 json-ize 시도하지 않았다. – argentum47