json key값 rename

json key값 rename

QA

json key값 rename

본문

json변수를 변경하고 싶습니다.


var data =객체명.serializeObject()로 생성한 Json입니다.



data에는 아래의 값이 담겨있습니다. 




 
{"orgNameCode": "이름"
 ,"orgAge" : "88"
 ,"orgEtc" : "기타"  }

또는 

{"chgNameCode": "이름"
 ,"chgAge" : "88"
 ,"chgEtc" : "기타"  }


이것을 



{"nameCode": "이름"
 ,"age" : "88"
 ,"etc" : "기타"  }


소문자 접두어 org, chg 를 삭제 하고 

org, chg 뒤에 있는 대문자를 소문자로 변경하는 것을 구현하고자 합니다.


key값이 변하는 지라 


function(data){

JSON.stringifu(data.key ) 정규식 

  data.each(function(i,j){

        replace(i)

}); 


}


설명이 어렵긴 한데 방법이 있을까요?




이 질문에 댓글 쓰기 :

답변 2


<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jQuery.serializeObject/2.0.3/jquery.serializeObject.min.js"></script>
<script type="text/javascript">
    function object_key_remap(obj, pattern_old, pattern_new, replacement) {
        var rtn = {};

        if (replacement === true) {
            rtn = obj;
        }

        for (var i in obj) {
            var k = i.replace(pattern_old, pattern_new);
            rtn[k] = obj[i];
            if (replacement === true) {
                delete rtn[i];
            }
        }

        return rtn;
    }

    $(function () {
        var data = $('form').serializeObject();
        var temp = object_key_remap(data, /^[a-z]+([A-Z])/, function () { return arguments[1].toLowerCase(); });
        var data_str = JSON.stringify(data);
        var temp_str = JSON.stringify(temp);

        alert(data_str + "\n\n" + temp_str);
    });
</script>


<form>
    <input type="text" name="orgNameCode" value="이름" />
    <input type="text" name="orgAge" value="88" />
    <input type="text" name="orgEtc" value="기타" />
    <input type="text" name="chgNameCode2" value="이름" />
    <input type="text" name="chgAge2" value="88" />
    <input type="text" name="chgEtc2" value="기타" />
    <input type="text" name="aaaa" value="bbbb" />
</form>

감사합니다. 잘 됩니다


 var data = $('form').serializeObject();
$.each(data, function(i ,j){
var fristUpperCase = i.match('[^a-z]');
if(fristUpperCase.index){
	console.log(i.substr(fristUpperCase.index, i.lenght));
}      
//i.subStr(i, 3) .push(j)
//	testData.push(fristUpperCase, j);
});

https://stackoverflow.com/questions/13391579/how-to-rename-json-key


여기에 좋은 샘플의 답변이 있네요

감사합니다.
저도 본것인데
key값을 변수로 받아 정규식 패턴을 써서 key값을 변경 하는 방법을 찾고 있습니다..

"첫번째 대문자를 만나면 그 앞에건 자르고 그 대문자는 소문자로 변경한다"
이런 로직을 만들고 있습니다.


변경해주어야 key가 한두개가 아니라서요 ㅠㅠ



$.each(data, function(i ,j){
      i.subStr(i, 3) .push(j)
});

답변을 작성하시기 전에 로그인 해주세요.
전체 1,020
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT