협이
785
2018-10-31 17:53:21
8
3446

JSON.stringify와 JSON.parse 에러 관련해서 질문드립니다.


제목 그대로 JSON.stringify와 JSON.parse를 사용하면서 나타나는 문제에 대해 질문드리고 싶어 글 적게되었습니다.


$scope.deleteDoc = function(data) {
		$log.debug("myDocCtrl - deleteDoc");
		
		if((data.cancelFlag == '2' || data.cancelFlag == '4') // 취소 완료 / 삭제완료
				|| (data.docStatusId != '3' && data.docStatusId != '4'))
		{ 
			var msg = "Delete?";
			if (userLang == "ja") msg = " 削除しますか?"; 
			
			JSON.stringify(data);

			toaster.pop({
				type: 'info',
				title : msg,
				body: "{template:'deleteToaster', data:'"+JSON.parse(data)+"'}",
				bodyOutputType : 'templateWithData'
			});
		}
		else{
			toaster.pop({
				type: 'error',
				body: 'Can not be deleted!!',
				showCloseButton: true,
				timeout: timeout
			});
		}
	}

위의 코드에서 toaster.pop 안에 있는 body에서 data를 JSON.parse하는데 에러가 나더라구요.

JSON.stringify를 시키는것까지는 문제가 없는데 같은 함수내에서 다시 그대로 받아서 JSON.parse를 하는게 왜 에러가 나는걸까요??

syntex에러인거같긴한데 대체 왜 구문오류가 나는질 모르겠습니다..

더 필요한 정보가 있다면 말씀주시면 수정해서 추가하겠습니다 도움 부탁드립니다!

0
  • 답변 8

  • 아마그래머
    245
    2018-10-31 17:57:25

    "" 빼고하면 되지않을까요

  • 협이
    785
    2018-10-31 18:01:49

    아마그래머


    ""라는게 어디부분을 말씀하시는건가요?

    아래 코드에서 ""을 말씀하시는건가용??

    data:'"+JSON.parse(data)+"'}
  • shuak
    100
    2018-10-31 18:02:27

    data 가 이미 json 타입의 데이터라서 parse가 이루어지지 않는 것 같네요

    stringify 는 string 타입으로 형변환을 시켜주는 것이니 json to string이 이루어지지만

    parse는 json to json 이라 구문오류가 발생하는 것으로 보입니다.


    JSON.parse 하지 마시고 그냥 data를 넣으시거나

    var d = JSON.stringify(data) 로 string 타입으로 형변환 후에

    JSON.parse(d)를 넣으시면 될거같네요

  • 협이
    785
    2018-11-01 09:01:25

    shuak


    답변 감사합니다 하지만 애석하게도 저 함수에서 JSON.stringify로 데이터를 보내고 그것을 인자로 받는 함수에서 JSON.parse를 하면 에러가 발생합니다...

    이게 되야하는데 안되서 문제네요 ㅠㅠ

  • 아마그래머
    245
    2018-11-01 09:13:05

     협이

    저도 잘은 모르지만..

    JSON.stringify(data)를 변수에 담아놓고 

    다시 parse 하면 되지 않을까요..?

  • 협이
    785
    2018-11-01 09:18:14

    아마그래머

    제가 방금 글 새로 쓴거 보시면 더 자세히 아실수있을텐데 그 방법이 안통합니다 ㅠㅠ


  • 유리세계
    3k
    2018-11-01 09:49:09
    "{template:'deleteToaster', data:'"+JSON.parse(data)+"'}"
    -> {template:'deleteToaster', data: data}
    로 안되나요? body가 꼭 문자열을 받아야 한다면 
    var bodyjson = JSON.stringfy({template:'deleteToaster', data: data}); 하셔야 할 것 같아요
  • 협이
    785
    2018-11-01 10:29:14

    유리세계

    toaster의 속성의 문제라 그 부분은 그렇게 처리할 수가 없습니다 ㅠ

    위의 코드는 예시코드라서 제가 1시간 전에 적은 글이 있습니다. 거기엔 실제 코드를 넣어뒀기 때문에 좀 더 이해가 쉬우실것같습니다


    data: data 같은 형식이 통하질 않습니다 ㅠ

  • 로그인을 하시면 답변을 등록할 수 있습니다.