JSON 응답을 구문 분석하여 ASP.NET 날짜를 자바 스크립트 날짜로 변환하려고합니다. 내가하고 그런 다음 new Date(1340298914781)
json 파싱을위한 jQuery 아약스 변환기 설정
String.prototype.parseWithJSONDate = function() {
return this.replace(/\/Date\((.*?)\)\//gi, 'new Date($1)');
};
카드를 설치 변환 필터에 \/Date(1340299653555)\/
정규 표현식 변환을 수행하는 자바 스크립트 문자열 개체를 확장
{"Id":1,"Title":null,"Description":null,"Content":null,"PropagateModel":false,"Status":0,"ComponentPublishDate":"\/Date(1340299653555)\/"}
:과 같이
실제 응답이 보인다 실제 구문 분석.
$.ajaxSetup({
dataFilter: function(data, dataType) {
if (dataType === "json") {
return data.parseWithJSONDate();
}
return data;
}
});
이 변환기는 작동하지 않습니다. 내가 가진 첫 번째 문제는 컨버터가 돌아온 후에 응답이 어떻게 든 손상 될 것입니다. 나는 JSON.parse
과 같은 것을 return JSON.parse(res)
과 같이 기능의 끝에서 호출하는 것으로 고정시켰다. 왜 전 세계에서 이미 JSON 문자열 인 문자열을 파싱해야합니까?
두 번째 문제는 실제 정규식이 값을 대체하지 않는 것입니다. 이상한 것은 샘플 JSON 문자열의 함수 밖에서 테스트 해 보았는데 잘 작동했습니다.
아무도 제안 할 수 있습니까? 감사!
업데이트 1 나는 내 첫 질문에 대한 대답을 생각해 냈습니다. 내 변환기가 json 및 텍스트 데이터 형식으로 실행되고있었습니다. 아마 내가 반환 값을 JSON으로 명시 적으로 변환해야했던 이유는 무엇일까요? 변환기에서 텍스트 데이터 형식을 제거하고 그에 따라 나머지 코드를 업데이트했습니다.
업데이트 2 날짜가 형식화 된 문자열 인 새보기 모델을 만들었습니다. 세상에서 가장 좋은 것은 아니지만 jQuery 아약스 이벤트로 고생하는 것보다 낫다. dataFilter
를 사용하는 대신
JSON String 또는 JavaScript 객체를 반환 할 것으로 기대하십니까? –
내 이해를 바탕으로, 변환기는 json 문자열을 이미 허용합니다. 그래서 json 문자열을 반환해야한다고 가정합니다. 적어도이 일은 내가하려고하는 일입니다. –
기본적으로'text json' 변환기는 JSON 문자열을 나타내는 JavaScript 객체를 반환합니다. jQuery가 평가하기 전에 단순히 json 문자열을 변경하려면 dataFilter를 사용하십시오. –