어허

Node.js post로 받은 json을 그대로 사용하면 int를 int로 하지않고 string으로 처리해버림 본문

개발/JavaScript

Node.js post로 받은 json을 그대로 사용하면 int를 int로 하지않고 string으로 처리해버림

AKDK 2016. 11. 21. 18:19
728x90


Node.js - Express 로 웹서버를 만들고


post 를 처리하는 과정에서 req.body에 넘어온 JSON 패킷을 사용하려다 보니 문제가 발생했다.



>> client-side

function ajax_post(path, params)

{

    $('#dbgRespJson').html('');

    $.ajax({

        url:path,

        dataType:'json',

        type:'POST',

        //data:{'msg':$('#send_msg').val()},

        data:params,

        success:function(result){

            dbg_log ( result );

            g_RespJson = result['resp'];

            $('#dbgRespJson').html(g_RespJson);

            dbg_RespJson(JSON.parse(g_RespJson));

        }

    });

}


function get_state()

{

    var getstate_io_json = {'jsonrpc': '2.0', 'method': 'getstate.generalio', 'params': [ { 'idx': 1 } ] };


    console.log ("getstate_io_json :", getstate_io_json);


    ajax_post('/g_device', getstate_io_json);


//  dbg_log("g_RespJson = ", g_RespJson);

}



>> server-side

console.log("[POST] req.body: ", req.body);

console.log("[POST] JSON.stringify(req.body): ", JSON.stringify(req.body));


 [POST] req.body:  { jsonrpc: '2.0',

  method: 'getstate.generalio',

  params: [ { idx: '1' } ] }

 [POST] JSON.stringify(req.body):  {"jsonrpc":"2.0","method":"getstate.generalio","params":[{"idx":"1"}]}


디버깅을 해보면 이렇게 나온다.




>> 해결

int 형으로 사용하려고 하는 필드를 parseInt()를 사용하여 Integer 인것을 알려주어야 한다.

req.body.params[0].idx = parseInt(req.body.params[0].idx);

console.log(" [POST] req.body: ",req.body);






728x90
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
공유하기 링크
Comments