**) 해당 글은 "밑바닥부터 시작하는 부동산 경매" 책에서 개인 공부를 하기 위한 정리임을 알려드립니다. 자세한 내용은 책을 구매하여 읽어보시기 바랍니다. 


경매절차


경매신청  ➡︎  경매개시결정  ➡︎  매각 준비  ➡︎  매각 실시  ➡︎  매각허가 결졍  ➡︎  매각대금 납부  ➡︎  배당 실시  ➡︎  경매 종결


1. 경매신청



받을 돈이 있는 채권자가 경매를 신청할 수 있는 근거 서류(집행권원)를 가지고 부동산 소재지 관할 법원에 경매신청서를 제출하면 된다. 

이때 경매신청자는 경매 진행 비용을 미리 납부(예납)해야 한다. 

비용은 경매 대상 부동산의 개별공시지가 혹은 시가표준액을 기준으로 하는데 1억 원인 경우 190만원 안팎, 2억 원인 경우 240만원 안팎의 금액을 예납하게 된다.


2. 경매개시결정



경매신청이 접수되면 해당 법원은 그 신청이 정당할 경우 신청일로부터 2일 이내에 직권으로 경매개시결정을 내린 뒤 역시 직권으로 등기관에게 경매 물건의 압류를 부동산 등기사항전부증명서에 기입(등기촉탁)하게 한다. 

이때 등기사항전부증명서에는 집행권원의 종류에 따라 임의경매개시결정(근저당권 등) 혹은 강제경매개시결정(판결문 등)으로 나뉘어 등기된다. 


3. 매각 준비



-. 배당요구 종기일 공고

법원은 경매개시결정이 기입 등기된 날로부터 1주일 이내에 배당요구를 할 수 있는 기한(종기일)을 정한다. 

이때 경매개시결정의 내용과 배당요구의 종기(2개월 이상 3개월 이하)를 공고한다.


-. 채권신고의 최고

채무자로부터 받을 돈이 있는 이해관계인은 정당한 관련 서류와 함께 배당요구의 종기일 이전까지 채권액을 신고해야 한다. 

법원이 채권을 신고하도록 안내(최고)하는 대상은 첫 경매개시결정등기 전에 부동산 등기사항전부증명서에 등기된 채권자 및 담보권자 등이다. 


-. 공과금 관련 기관에 대한 최고

법원은 조세 및 공과금 등을 관리하는 각 공공기관에 채권의 유무, 그 원인 및 금액을 배당요구의 종기일까지 법원에 신고하도록 최고한다.


-. 집행관의 현황조사

법원은 경매개시결정을 한 뒤 즉시 집행관에게 부동산의 현황조사를 하도록 명령한다. 

현황조사 시에는 부동산의 현황, 점유관계, 보증금 및 차임 등의 내용을 기록하게 된다. 

집행관은 조사내용을 토대로 현황조사보고서를 작성해 제출해야 한다. 


-. 감정평가 명령

법원은 경매개시결정 기입 등기가 된 후 3일 이내에 감정평가 명령을 내려 감정평가사가 해당 부동산을 평가하도록 한다. 

평가 명령을 받은 감정평가사는 2주 이내에 감정평가서를 법원에 제출해야 한다. 

법원은 감정평가서를 참조해 최저매각가격을 정한다. 


-. 매각물건명세서 작성

법원은 현황조사서와 별도로 경매 대상 부동산에 대한 매각물건명세서를 작성한다. 

매각물건명세서에는 부동산의 표지, 점유자 및 그 권원, 점유기간, 보증금 및 차임, 경매 매각으로 효력을 잃지 않는 권리 또는 가처분 등 해당 부동산에 관한 권리 등이 기록된다. 


-. 매각기일 및 매각결정기일의 지정, 공고

법원은 감정평가서를 참조해 정한 최저매각가격으로 매각을 하는 매각기일과 개막결졍기일을 정해 이해관계인에게 통지하고 공고한다. 

매각기일은 해당 부동산의 입찰을 실시하는 당일을 의미하며 당일 낙찰이 되면 이후 일주일간 매각절차에 문제가 없었는지를 살핀다. 

이후 문제가 발견되지 않으면 매각결정기일에 최종적으로 매각을 허가하게 된다. 


4. 매각 실시



법원은 매각기일에 부동산의 입찰을 실시하고 부동산 별로 가장 높은 금액으로 입찰한 자를 최고가 매수신고인으로 선정한 후 매각을 종료한다. 

입찰표, 입찰봉투 및 공동입찰 등의 필요서류는 집행법원의 매각장소에 비치해 제공한다.  

입찰자는 입찰표에 인적사항을 적고, 보증금(최저가격의 10%) 및 입찰가격을 적은 뒤 본인의 도장을 찍어 제출한다. 

입찰봉투는 보증금용 소봉투와, 입찰표 및 보증금 봉투를 넣는 대봉투 등 2개로 되어 있다. 

입찰의 마감 및 개찰 시 최고가 매수신고인 외에는 보증금을 반환한다. 모든 부동산의 개찰을 마감한 뒤 매각기일을 종결한다. 


-. 입찰시간

입찰시간은 집행법원마다 조금씩 다른데 통상적으로 오전 10시에 시작해 11시에서 12시 사이에 입찰을 마감한다. 

집행관은 입찰 주의사항 및 당일 경매사건의 변동 여부에 대해 먼저 고지를 하는데, 약 10분간 집행관의 고지가 끝나면 바로 입찰이 시작된다.


-. 투찰

입찰표 작성과 보증금 준비가 다 되면 마감시간 내에 법대 앞으로 가서 입찰표를 제출한다. 이때 입찰표, 그리고 보증금 봉투를 넣은 대봉투와 함께 신분증을 법대 앞의 집행관에게 제출하면 신분증을 확인한 후 투찰했다는 입찰자용 수취증을 대봉투에서 절취해 돌려주고, 나머지 대봉투를 입찰함에 넣으면 투찰이 마무리 된다. 


-. 개찰

입찰시간이 마감된 후에는 투찰한 입찰표를 집행관들이 물건별로 잠시 정리한 후에 바로 물건번호 혹은 물건 종류별로 개찰을 개시하게 된다. 


-. 최고가 매수신고인

입찰을 마감하고 개찰한 결과 물건별로 가장 높은 가격으로 입찰에 참여한 자를 집행법원에서 최고가 매수신고인으로 결정한다. 


-. 차순위 매수신고인

집행관은 최고가 매수신고인 외에 다른 입찰자들에게 차순위 매수신고를 최고한다. 이때 차순위신고를 원하는 자는 즉시 그 의사표시를 해야 하며, 그 입찰가격이 최고가 매수신고인의 금액과 10% 이내의 차이여야 차순위신고가 가능하다.


-. 매각기일의 종료

집행관은 최고가 매수신고인 및 차순위신고인의 신분증을 확인한 후 매각보증금 영수증을 교뷰하고, 그 외에 입찰자에게 입찰보증금을 반환한다. 그리고 해당 물건의 경매를 종료한다. 



5. 매각허가결정



-. 매각결정기일

매각결정기일은 집행법원이 매각기일 종료 후 7일 이내의 기간을 두고, 매각의 허가 또는 불허가를 결정하는 기간이다. 

이때 집행법원은 진행한 경매의 절차 및 최고가 매수신고인의 선정에 흠결이 있는지를 검토하고, 매각결정에 대해 이의가 있는 이해관계인의 항고가 있는지를 확인한다. 경매 진행절차에 하자가 없고, 이해관계인의 항고 등 이 없으면 집행법원은 7일 후 매각허가를 결정하게 된다. 


-. 매각불허가

매각기일 후 매각허가가 결정되기까지의 기간에 경매 진행절차에 문제가 있음이 밝혀지게 되거나 경매 대상 부동산에서 현황조사 당시 발견되지 않았던 흠결이 새로이 밝혀지는 경우 집행법원은 사안의 경중을 따져 매각허부에 대한 결정을 내린다. 

매각불허가 결정이 되면 흠결을 보완하고, 새 매각기일을 정해 매각절차를 다시 진행한다.  

매각불허가의 주요 사유로는 매수신청 금지자나 입찰에 참여할 수 없는 자가 최고가 매수인으로 선정되거나, 무잉여 혹은 과잉여의 문제 및 매각물건명세서상의 중대한 흠결 등이 발견되는 경우, 또는 소유자에 대한 경매개시결정 통지가 송달되지 않는 경우와 경매집행정지결정 정본이 제출된 경우 등이다.


-. 매각허가결정 확정

매각허가가 결정되면 다시 7일 이내의 기간으로 두어 이해관계인이 항고할 수 있는 시간을 주고, 이 기간 동안 아무 항고가 없는 경우에는 매각허가결정을 확정한 뒤 일정 기간(1개월) 내로 잔금의 납부기한을 정해 최고가 매수신고인에게 통지해 잔금을 납부하도록 한다. 


6. 매각대금 납부



-. 매각대금 납부

최고가 매수신고인은 매각허가결정이 확정된 다음 날부터 잔금 납부기한으로 정해진 기한 안에 보증금을 제외한 나머지 잔금 납부명령서를 집행법원에서 발급받아서 은행에 납부해야 한다. 

잔금 납부기한이 지난 뒤 납부하는 경우에는 이에 대한 지연이자를 연 15% 기준으로 추가 납부해야 하므로 주의해야 한다. 

최고가 매수신고인이 매각대금을 완납한 뒤에는 소유권이전 촉탁등기를 하지 않아도 해당 부동산의 소유권을 취득한다. 


-. 매각대금 납부절차

매각대금을 납부하려면 경매를 진행한 법원의 해당 경매계에 가서 법원보관금 납부서를 발급받은 뒤 납부서와 함께 잔대금을 법원 구내 은행에 납부하고 나서 납부 영수증을 다시 해당 경매계에 젳출하면 된다. 잔대금 영수증을 제출하면 경매계에서 매각대금 완납증명서를 발급해준다. 


-. 매각 관련 기타 내용

최고가 매수신고인이 잔대금을 미납할 경우 법원은 차순위 매수신고인에게  통보해 매각절차를 진행하게 되는데, 차순위 매수신고인이 없는 경우에는 재매각기일을 정해 재매각절차를 실시한다. 

원칙적으로 최고가 매수인이 잔대금을 납부하기 전까지는 경매를 취하할 수 있다. 이때 최고가 매수신고인이 있는 경우는 경매취하동의서를 최고가 매수신고인으로부터 받아 함께 제출해야 한다. 


7. 배당실시



최고가 매수신고인이 매각대금을 납입하면 법원은 1개월 이내에 배당기일을 정해 채권자들의 채권액에 대해 변제하게 된다. 매각대금이 채권자의 채권을 모두 충족하면 집행법원은 변제하고 남은 잉여금을 원 소유주에게 교부한다. 다만 배당에 참여한 채권자의 모든 채권액을 충족하지 못하는 경우 집행법원은 "민법" 및 "민사집행법" 등의 규정에서 미리 정한 순위에 따라 배당을 진행한다. 


-. 배당 순위

최고가 매수신고인이 납부한 보증금 및 잔대금은 해당 경매 부동산과 관련된 채권자들에게 아래와 같은 순서로 나눠주게 된다.

1) 0순위 : 경매 집행 비용과 부동산의 점유자가 목적물을 관리/보존하는 데 지출한 비용인 비용상환청구채권액

2) 1순위 : 소액임차인의 최우선변제금과 임금채권 중 일정액

3) 2순위 : 겅매 대상 부동산에 발생하는 조세인 당해세

- 국세 : 상속세, 증여세, 재평가세

- 지방세 : 재산세, 종합토지세의 본세, 자동차세, 도시계획세등과 그 가산금

4) 3순위 : 담보물권(저당권, 전세권, 담보가등기)과 임차보증금(우선변제 보증금)

5) 4순위 : 임금채권(최우선변제 임금채권을 제외한 임금채권)

6) 5순위 : 당해세를 제외한 국세와 지방세

7) 6순위 : 보험료와 공과금

8) 7순위 : 일반채권(가압류 등)


-. 배당표

집행법원은 채권자 및 채무자를 위해 배당기일 3일 전까지 배당표를 작성해 법원에 비치해야 하며 배당지금기일에 출석한 이해관계인과 배당을 요구한 채권자를 대상으로 배당표를 확정한 후에 배당액을 지급한다. 배당표에는 매각대금, 채권자별 채권의 원금, 이자, 비용, 배당의 순위와 배당의 비율이 기재되어야 하며, 출석한 이해관계인과 배당을 요구한 채권자가 동의한 경우에는 이에 따라 배당표를 확정한다. 









var regExp = /[ \{\}\[\]\/?.,;:|\)*~`!^\-_+┼<>@\#$%&\ '\"\\(\=]/gi;

var str = $( "#inputid").val();

var text = str.replace(regExp, "")


$( "#inputid").val(text.trim());

'프로그래밍 > Javascript' 카테고리의 다른 글

String 관련 utils  (0) 2019.03.07
ArrayUtils  (0) 2019.03.07
xml to json  (0) 2019.03.07
[javascript] Object push를 이용한 Validation Check  (0) 2019.03.07
/**
* trim
*/
String.prototype.trim = function(){
       return this.replace(/(^\s*)|(\s*$)/gi, "");
};


/**
* 공백문자 이거나 null 체크
*/
function isEmpty(param){

   if(param==null || param == undefined) return true;
   if(typeof param == "number") return false;

   var str = param.trim();
   if(str.length == 0){
      return true;
   }else{
      return false;
   }
}


/**
* 숫자열을 3자리마다 "," 표 찍기
*/
function formatMoney(strNumber,mode){

   if(mode == undefined) mode = "INSERT";

   if(typeof strNumber == 'number'){
      strNumber = strNumber.toString();           //숫자타입이면 문자로 변환
   }else if(strNumber == null){
      strNumber = '';
   }

    var nLength=strNumber.length;
    var i=0;
    var strResult='';
    if(mode=='INSERT'){
        var j=0;
        for(i=nLength-1;i>=0;i--){
            j++;
            strResult=strNumber.substring(i,i+1)+strResult;
            if(j%3==0 && i>0){
                strResult=','+strResult;
            }
        }
    }else if( mode=='DELETE'){
        for(i=nLength-1;i>=0;i--){
            if(strNumber.substring(i,i+1)!=','){
                strResult=strNumber.substring(i,i+1)+strResult;
            }
        }
    }
    return strResult;
}

/**
* 알파벳으로만 되어 있는 문자열인지
*/
function isAlpha(xStr){
    return xStr.match(/[^a-z]/gi);
}


/**
* 문자열에 한글문자가 하나라도 있는지 검사
*/
function strInKrChar(value){
    for (var idx = 0; idx < value.length; idx++) {
        str2 = value.charAt(idx);
        if (( str2 >= 'ㄱ' && str2 <= '힣' )){
            return true;
        }
    }
    return false;
}

/**
* 문자열이 영문대소 와 숫자 로만 구성됬는지 패턴검사
*/
function strInNumNEn(value){
    if(value==null || value.length < 1) return true;
    var temp = value;
    while(temp.indexOf("\\")>-1){
        temp = temp.substr(temp.indexOf("\\")+1);
    }
    temp = temp.replace("[","");
    temp = temp.replace("]","");
    var format = "[^\._A-Za-z0-9]{1,}";

    if(temp.search(format) != -1){
        return true;
    }else{
        return false;
    }
}

/**
* 정규식으로 문자열이 숫자로만 구성됬는지 패턴검사
*/
function strInNum(value){
    var format = "^[0-9]";

    if (value.search(format) != -1) {
        return true;
    }
    return false;
}

/**
* 정규식으로 문자열이 이메일로 유효한지 패턴검사
*/
/*function isEmail(value){
    var format = "^([-.0-9a-zA-Z]+)@([-.0-9a-zA-Z]+).([a-zA-Z]+)$";
    if (value.search(format) != -1) {
        return true;
    }
    return false;
}
*/
/**
* 정규식으로 문자열이 이메일로 유효한지 패턴검사2
*/
function isEmail(obj){
    var reg = /^[0-9a-zA-Z_]([_\.]?[0-9a-zA-Z_])*@([0-9a-zA-Z_]+)(\.[0-9a-zA-Z_]+){1,2}$/;

    if(reg.test(obj.val()) == false) {
        //obj.focus();
        return false;
    }else{
        return true;
    }
}


/**
* 정규식으로 문자열이 일반전화번호로 유효한지 패턴검사
*/
function isPhoneNumber(value){
    var format = "^[0-9]\{2,3\}-[0-9]\{3,4\}-[0-9]\{4\}$";

    if (value.search(format) != -1) {
        return true;
    }
    return false;
}

/**
* 정규식으로 문자열이 헨드폰번호로 유효한지 패턴검사
*/
function isMobileNumber(value){
    var format = "^[0-9]\{3\}-[0-9]\{3,4\}-[0-9]\{4\}$";
    if (value.search(format) != -1) {
        return true;
    }
    return false;
}

/**
* 전화번호형식으로 ex)025556666 >> 02-555-6666
*/
function toPhoneFormat(pStr){
   return pStr.replace(/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/, '$1-$2-$3');
}

/**
* 전화번호&핸드폰 체크
*/
function fn_isPhonNumer(){
    var result = (/^(01[016789]{1}|02|0[3-9]{1}[0-9]{1})-[0-9]{3,4}-[0-9]{4}$/).test(pStr);
    if(reg.test(obj.val()) == false) {
        obj.focus();
        alert(content);
        return false;
    }else{
        return true;
    }
}
/**
* 숫자만 허용
*/
function isNumber(pStr){
   var result = (/[^0-9]/g).test(pStr);
   return !result;
}
/**
* 숫자,-  허용
*/
function isNumberMinus(pStr){
    var result = (/[^0-9\-]/g).test(pStr);
    return !result;
}

/**
* 숫자,콤마  허용
*/
function isNumberComma(pStr){
    var result = (/[^0-9\,]/g).test(pStr);
    return !result;
}

/**
* 영문,숫자만 허용
*/
function isEngNum(pStr) {
   var result = (/[^a-zA-Z0-9\s]/).test(pStr);
   return !result;
}

/**
* 영문,숫자, 특수문자(-)만 허용
*/
/*function isEngNumMinus(pStr) {
   var result = (/[^a-zA-Z0-9|-\s]/).test(pStr);
   return !result;
}*/

/**
* 영문,숫자, 특수문자(_)만 허용
*/
function isEngNumUnderbar(pStr) {
    var result = (/^[a-zA-Z0-9|_]*$/).test(pStr);
    return !result;
}

/**
* 8~20자리 영문,숫자,특수문자 중 2가지 조합 패스워드
*/
function isPasswordFormat(pStr) {
   var result = (/(^.*(?=^.{8,20}$)(?=.*\d)(?=.*[a-zA-Z])|(?=.*[!@#$%^&+=])).*$/).test(pStr);
   return !result;
}

function isNameFormat(pStr) {
    var result = (/^[가-힣]{2,4}|[a-zA-Z]{2,10}\s[a-zA-Z]{2,10}$/).test(pStr);
    return !result;
}

/**
* 숫자앞에 원하는 길이만큼 '0' 채우기
*
* @param no   : 숫자
* @param len  : 전체길이
* @returns 숫자앞에 '0' 채운 문자열
*/
function fillzero(no, len) {
   no= '000000000000000'+no;
   return no.substring(no.length-len);
}

/**
* 비밀번호 안전성 체크
*/
function ischeckPassword(pStr){
    var check = /^(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9])(?=.*[0-9]).{8,20}$/;

    if(pStr.length < 8 || pStr.length > 20) return false;

    return check.test(pStr);

}


'프로그래밍 > Javascript' 카테고리의 다른 글

특수문자 및 공백 제거  (0) 2019.03.07
ArrayUtils  (0) 2019.03.07
xml to json  (0) 2019.03.07
[javascript] Object push를 이용한 Validation Check  (0) 2019.03.07


/**
* 배열 인덱스 삭제
*
* @param index    : 배열 인덱스
* @returns
*/
Array.prototype.remove = function (index) {
   this.splice(index, 1);
};




/**
* 해당키값을 가지는 총수
*
* @param arrayObj : 대상배열객체
* @param key     : 찾으려는 row 객체의 속성키
* @param value       : 찾으려는 row 객체의 속성값
*/
function getCountWithValue(arrayObj, key, value){
   var cnt = 0;
   for(var i=0; i<arrayObj.length; i++){
      if(arrayObj[i][key] == value) cnt++;
   }
   return cnt;
}

/**
* 해당키값을 가지는 행 Object
*
* @param arrayObj : 대상배열객체
* @param key     : 찾으려는 row 객체의 속성키
* @param value       : 찾으려는 row 객체의 속성값
*/
function getRowObjectWithValue(arrayObj, key, value){
   var obj = null;
   for(var i=0; i<arrayObj.length; i++){
      if(arrayObj[i][key] == value){
         obj = arrayObj[i];
         break;
      }
   }
   return obj;
}

/**
* 해당키값을 가지는 행 index
*
* @param arrayObj : 대상배열객체
* @param key     : 찾으려는 row 객체의 속성키
* @param value       : 찾으려는 row 객체의 속성값
*/
function getRowIndexWithValue(arrayObj, key, value){
   var idx = -1;
   for(var i=0; i<arrayObj.length; i++){    
      if(arrayObj[i][key] == value){
         idx = i;
         break;
      }
   }
   return idx;
}


/**
* 해당키값을 가지는 index (문자열배열에서)
*
* @param arrayObj : 대상배열
* @param value       : 찾으려는 값
*/
function getArrayIndexWithValue(arrayStr, value){
   var idx = -1;
   for(var i=0; i<arrayStr.length; i++){    
      if(arrayStr[i] == value){
         idx = i;
         break;
      }
   }
   return idx;
}


/**
* 배열에 요소(객체)추가 (특정 index 에)
*
* @param arrayObj : 대상배열객체
* @param idx     : 특정 index
* @param obj     : 넣을 요소 객체
*/
function addToArray(arrayObj, idx, obj){
   var resultArray = [];
   var aSize = arrayObj.length;
  
   var tempA = arrayObj.slice(0, idx);          //앞에자르고
   var tempB = arrayObj.slice(idx, aSize);       //뒤에잘라
   var tempP = [obj];                   //사이에 넣을 것을 가지고
  
   resultArray = tempA.concat(tempP, tempB) //전체 합친다
  
   return resultArray;       //새로운 결과 반환
}


/**
* 객체배열 정렬
*
* @param arrayObj : 대상배열객체
* @param key     : 객체내 특정 key
* @param direction    : 'ASC' or 'DESC'
*/
function sortByKey(arrayObj, key, direction) {
   if(direction==undefined){
      direction = 'ASC';
   }
  
   return arrayObj.sort(function(a, b) {
        var x = a[key]; var y = b[key];
        return ((x < y) ? ((direction=='ASC')?-1:1) : ((x > y) ? ((direction=='ASC')?1:-1) : 0));
    });
}

function isDuplicateValue(inputValueArray){
    var sorted_arr = inputValueArray.slice().sort();

    var results = [];
    for (var i = 0; i < inputValueArray.length - 1; i++) {
        if (sorted_arr[i + 1] == sorted_arr[i]) {
            results.push(sorted_arr[i]);
        }
    }
    return (results != "");
}



'프로그래밍 > Javascript' 카테고리의 다른 글

특수문자 및 공백 제거  (0) 2019.03.07
String 관련 utils  (0) 2019.03.07
xml to json  (0) 2019.03.07
[javascript] Object push를 이용한 Validation Check  (0) 2019.03.07
// Converts XML to JSON
function XMLtoJSON() {
  
   var me = this; // stores the object instantce

   // gets the content of an xml file and returns it in
   me.fromFile = function(xml, rstr) {
      // Cretes a instantce of XMLHttpRequest object
      var xhttp = (window.XMLHttpRequest) ? new XMLHttpRequest()
            : new ActiveXObject("Microsoft.XMLHTTP");
      // sets and sends the request for calling "xml"
      xhttp.open("GET", xml, false);
      xhttp.send(null);

      // gets the JSON string
      var json_str = jsontoStr(setJsonObj(xhttp.responseXML));

      // sets and returns the JSON object, if "rstr" undefined (not passed),
      // else, returns JSON string
      return (typeof (rstr) == 'undefined') ? JSON.parse(json_str) : json_str;
   }

   // returns XML DOM from string with xml content
   me.fromStr = function(xml, rstr) {
      // for non IE browsers
      if (window.DOMParser) {
         var getxml = new DOMParser();
         var xmlDoc = getxml.parseFromString(xml, "text/xml");
      } else {
         // for Internet Explorer
         var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
         xmlDoc.async = "false";
      }

      // gets the JSON string
      var json_str = jsontoStr(setJsonObj(xmlDoc));

      // sets and returns the JSON object, if "rstr" undefined (not passed),
      // else, returns JSON string
      return (typeof (rstr) == 'undefined') ? JSON.parse(json_str) : json_str;
   }

   // receives XML DOM object, returns converted JSON object
   var setJsonObj = function(xml) {
      var js_obj = {};
      if (xml.nodeType == 1) {
         if (xml.attributes.length > 0) {
            js_obj["@attributes"] = {};
            for ( var j = 0; j < xml.attributes.length; j++) {
               var attribute = xml.attributes.item(j);
               js_obj["@attributes"][attribute.nodeName] = attribute.value;
            }
         }
      } else if (xml.nodeType == 3) {
         js_obj = xml.nodeValue;
      }
      if (xml.hasChildNodes()) {
         for ( var i = 0; i < xml.childNodes.length; i++) {
            var item = xml.childNodes.item(i);
            var nodeName = item.nodeName;
            if (typeof (js_obj[nodeName]) == "undefined") {
               js_obj[nodeName] = setJsonObj(item);
            } else {
               if (typeof (js_obj[nodeName].push) == "undefined") {
                  var old = js_obj[nodeName];
                  js_obj[nodeName] = [];
                  js_obj[nodeName].push(old);
               }
               js_obj[nodeName].push(setJsonObj(item));
            }
         }
      }
      return js_obj;
   }

   // converts JSON object to string (human readablle).
   // Removes '    \r\n', rows with multiples '""', multiple empty rows, ' "",',
   // and " ",; replace empty [] with ""
   var jsontoStr = function(js_obj) {
      var rejsn = JSON.stringify(js_obj, undefined, 2).replace(
            /(\    |\\r|\\n)/g, '').replace(/"",[\n    \r\s]+""[,]*/g, '')
            .replace(/(\n[    \s\r]*\n)/g, '').replace(
                  /[\s    ]{2,}""[,]{0,1}/g, '').replace(
                  /"[\s    ]{1,}"[,]{0,1}/g, '').replace(/\[[    \s]*\]/g,
                  '""');
      return (rejsn.indexOf('"parsererror": {') == -1) ? rejsn
            : 'Invalid XML format';
   }
};

// creates object instantce of XMLtoJSON

var xml2json = new XMLtoJSON();


'프로그래밍 > Javascript' 카테고리의 다른 글

특수문자 및 공백 제거  (0) 2019.03.07
String 관련 utils  (0) 2019.03.07
ArrayUtils  (0) 2019.03.07
[javascript] Object push를 이용한 Validation Check  (0) 2019.03.07
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
/**
*    일반문자열 유틸.
*
* @author someone
* @version 1.0.0
*/
public class JsonUtil {
    /**
     * 로그 출력.
     */
    @SuppressWarnings("unused")
    private static Logger logger = Logger.getLogger(JsonUtil.class);
    /**
     * Map을 jsonString으로 변환한다.
     *
     * @param map Map<String, Object>.
     * @return String.
     */
    @SuppressWarnings("unchecked")
    public static JSONObject getJsonStringFromMap( Map<String, Object> map ) {
        JSONObject json = new JSONObject();
        for( Map.Entry<String, Object> entry : map.entrySet() ) {
            String key = entry.getKey();
            Object value = entry.getValue();
            json.put(key, value);
        }
        
        return json;
    }
    
    /**
     * List<Map>을 json으로 변환한다.
     *
     * @param list List<Map<String, Object>>.
     * @return JSONArray.
     */
    @SuppressWarnings("unchecked")
    public static JSONArray getJsonArrayFromList( List<Map<String, Object>> list ) {
        JSONArray jsonArray = new JSONArray();
        for( Map<String, Object> map : list ) {
            jsonArray.add( getJsonStringFromMap( map ) );
        }
        
        return jsonArray;
    }
    
    /**
     * List<Map>을 jsonString으로 변환한다.
     *
     * @param list List<Map<String, Object>>.
     * @return String.
     */
    @SuppressWarnings("unchecked")
    public static String getJsonStringFromList( List<Map<String, Object>> list ) {
        JSONArray jsonArray = new JSONArray();
        for( Map<String, Object> map : list ) {
            jsonArray.add( getJsonStringFromMap( map ) );
        }
        
        return jsonArray.toJSONString();
    }
    /**
     * JsonObject를 Map<String, String>으로 변환한다.
     *
     * @param jsonObj JSONObject.
     * @return String.
     */
    @SuppressWarnings("unchecked")
    public static Map<String, Object> getMapFromJsonObject( JSONObject jsonObj ) {
        Map<String, Object> map = null;
        
        try {
            
            map = new ObjectMapper().readValue(jsonObj.toJSONString(), Map.class) ;
            
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return map;
    }
    /**
     * JsonArray를 List<Map<String, String>>으로 변환한다.
     *
     * @param jsonArray JSONArray.
     * @return List<Map<String, Object>>.
     */
    public static List<Map<String, Object>> getListMapFromJsonArray( JSONArray jsonArray ) {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        
        if( jsonArray != null )
        {
            int jsonSize = jsonArray.size();
            for( int i = 0; i < jsonSize; i++ )
            {
                Map<String, Object> map = JsonUtil.getMapFromJsonObject( ( JSONObject ) jsonArray.get(i) );
                list.add( map );
            }
        }
        
        return list;
    }


'프로그래밍 > JAVA' 카테고리의 다른 글

java 컬렉션 종류  (0) 2019.03.07
RSA암호화 key생성 암호화 복호화  (0) 2019.03.07
RSA암호화 sample  (0) 2019.03.07
날짜관련 util  (0) 2019.03.07
FCM push 보내기  (0) 2019.03.07

+ Recent posts