source

JSON.Parse','Uncatched SyntaxError:예기치 않은 토큰 o

lovecheck 2023. 3. 13. 20:35
반응형

JSON.Parse','Uncatched SyntaxError:예기치 않은 토큰 o

웹 서비스에서 돌아온 JSON에 문제가 있습니다.JSON에 견적이 부족한 것 같습니다만, JSON에 견적을 추가하면 에러가 납니다.다음은 오류 메시지입니다. 'Uncatched SyntaxError:예기치 않은 토큰 o.문자열을 콘솔에 기록할 때: [Object Object], [Object Object]

에러를 시뮬레이트 하는 코드 예를 다음에 나타냅니다.

//Error I am trying to solve
var jsonString = '[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]';
var myData = JSON.parse(jsonString);

$(document).ready(function() {
    var $grouplist = $('#groups');
    $.each(myData, function() {
        $('<li>' + this.Name + '</li>').appendTo($grouplist);
    });
});

다음은 문자열 주위에 작은 따옴표로 둘러싸인 동일한 코드입니다.그건 효과가 있다.

//Successful Javascript
var jsonString = '[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]';
var myData = JSON.parse(jsonString);

$(document).ready(function() {
    var $grouplist = $('#groups');
    $.each(myData, function() {
        $('<li>' + this.Name + '</li>').appendTo($grouplist);
    });
});

//Successful HTML
<ul id="groups"></ul>

그러나 실제 코드에서 필요한 것처럼 따옴표를 문자열에 추가하려고 하면 실패합니다.

//Does not work when I need to append quotes to the string:
var jsonStringNoQuotes = [{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}];
jsonStringQuotes = "'" + jsonStringNoQuotes + "'";
var myData = JSON.parse(jsonStringQuotes);

$(document).ready(function() {
    var $grouplist = $('#groups');
    $.each(myData, function() {
        $('<li>' + this.Name + ',' +  this.Id + '</li>').appendTo($grouplist);
    });
});

다음 오류: 콘솔에 대한 로그 문자열: [개체 개체], [개체 개체] data.js:809 Unaught SyntaxError:예기치 않은 토큰 '

당황스럽네요.아무쪼록 잘 부탁드립니다!감사해요!

작은 따옴표가 없으면 안에 두 개의 개체가 있는 배열을 만듭니다.이것은 JavaScript 고유의 구문입니다.따옴표를 추가하면 해당 개체(array+2 개체)가 문자열이 됩니다.사용할 수 있습니다.JSON.parse문자열을 JavaScript 개체로 변환합니다.사용할 수 없습니다.JSON.parseJavaScript 개체를 JavaScript 개체로 변환합니다.

//String - you can use JSON.parse on it
var jsonStringNoQuotes = '[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]';

//Already a javascript object - you cannot use JSON.parse on it
var jsonStringNoQuotes = [{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}];

게다가 리터럴의 작은 따옴표 문자를 JSON 문자열에 추가하고 있기 때문에, 마지막 예는 실패합니다.이건 불법이에요.JSON 사양에서는 큰따옴표만 사용할 수 있습니다.만약 당신이 한다면console.log다음...

console.log("'"+[{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}]+"'");
//Logs:
'[object Object],[object Object]'

배열의 문자열 표현을 반환하는 것을 알 수 있습니다.이 문자열은 쉼표로 구분된 목록으로 변환되며 각 목록 항목은 개체의 문자열이 됩니다.[object Object]javascript의 연관 배열은 각 키/값 쌍이 속성/값인 단순한 객체입니다.

왜 이런 일이 일어날까요?스트링으로 시작하니까"'"어레이에 추가하려고 하면 어레이의 문자열 표현이 요구되고 다른 문자열이 추가됩니다."'".

JSON과 Javascript는 전혀 다르기 때문에 혼동하지 말아 주세요.JSON은 사람이 읽을 수 있는 데이터 형식이며 javascript 객체를 만들 때 사용하는 구문에 일치하도록 설계되었습니다.JSON은 문자열입니다.Javascript 객체는 그렇지 않으므로 코드로 선언할 때 따옴표로 둘러싸여 있지 않습니다.

http://jsfiddle.net/NrnK5/ 를 참조해 주세요.

var jsonStringNoQuotes = [{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}];

json 객체를 만듭니다.해석할 필요가 없습니다.

jsonStringQuotes = "'" + jsonStringNoQuotes + "'";

'[object]'가 반환됩니다.

그래서 에러가 발생하고 있습니다.

var myData = JSON.parse(jsonStringQuotes);

마지막 예는 비활성 JSON입니다.내부 문자열을 제외하고 JSON에서는 작은 따옴표를 사용할 수 없습니다.두 번째 예에서는 단일 따옴표는 문자열에 포함되지 않고 시작과 끝을 나타내는 역할을 합니다.

자세한 것은, http://www.json.org/ 를 참조해 주세요.

추가할 내용:왜 "진짜 코드로 해야 할 것 같다"고 생각하는 거죠?그럼 저희가 해결책을 찾는 걸 도와드릴게요.

서버로부터의 정보는 이미 JSON 오브젝트로 평가되고 있는 경우가 있습니다.를 들어 jQuery get 메서드를 사용하면 다음과 같습니다.

$.get('/service', function(data) {  
  var obj = data;

      /* 
         "obj" is evaluated at this point if server responded 
         with "application/json" or similar.
       */
      for (var i = 0; i < obj.length; i++) {
        console.log(obj[i].Name);
      }
    });

문자열 리터럴로 변환해야 할 JSON을 사용할 수 .JSON.stringify:

var json = [{"Id":"10","Name":"Matt"},{"Id":"1","Name":"Rock"}];
var jsonString = JSON.stringify(json);

이 에는 왜 그냥 수 안 돼요.jsonparsing.stringize의 parsing variable이 의 parsing을 해 주세요.

언급URL : https://stackoverflow.com/questions/19239217/json-parse-uncaught-syntaxerror-unexpected-token-o

반응형