2012-11-05 3 views
1

나는 jqPlot을 사용하여 차트를 만듭니다. 차트의 데이터 포인트는 GSON을 사용하여 작성된 JSON 오브젝트에서 가져온 것입니다.JSON 문자열을 JavaScript의 배열로 변환하십시오.

String chartDataPoints = "[[1352128861000, 0.0], [1352128801000, 0.0], [1352128741000, 0.0], [1352128681000, 0.0], [1352128621000, 0.0],...More chart points in this format ,[[x0,y0], [x1,y2]...]]"; 

는 X 포인트는 날짜입니다 다음과 같이 데이터를 보유하고있는 자바 객체가 클라이언트 저장소에 데이터를 보낼 수 있도록 차트 데이터 포인트는, 자바 스크립트 배열 형식으로 내장되어 있습니다.

자바 스크립트 배열 인 것처럼이 데이터를 JSON 객체에서 직접 전달할 수 있습니까? 현재 MyJsonObject.chartDataPoints는 문자열로 처리됩니다, 그래서 jqPlot ($ .jqplot ('에 chart1', MyJsonObject.chartDataPoints는) 아무것도 플롯되지 않습니다

+0

JSON의 정의는 "javascript 배열 또는 객체의 문자열 표현"입니다. – slebetman

답변

7

하나의 옵션을 사용하는 것입니다 eval :.

var arr = eval('(' + json_text + ')'); 

위의 방법은 가장 쉽고 광범위하게 지원되는 방법이지만, JavaScript 코드를 실행할 때 소스를 신뢰하는 경우에만 eval을 사용해야합니다.

일부 브라우저에는 네이티브 JSON 파서가 있습니다. 다음 :

var arr = JSON.parse(json_text); 

jQuery과 같은 타사 라이브러리도 JSON을 처리하는 기능을 제공 할 수 있습니다. jQuery를, 당신은 다음을 수행 할 수 있습니다 그들은 수준의 보호를 제공하기로

var arr = jQuery.parseJSON(json_text); 

(파서를 사용) 하단의 두 가지 방법이 선호된다.

+0

MitchS '(+1) 답변에 추가하면 IE6과 IE7은 JSON 객체가 정의되지 않은 두 개의 브라우저입니다. 이 경우 Crockford의 [json2 스크립트] (https://github.com/douglascrockford/JSON-js/blob/master/json2.js)를 사용하여 JSON objec을 구성 할 수 있습니다. – cbayram

+0

게시하기 전에 JQuery.parseJSON을 시도해 보았습니다. 'SyntaxError : JSON.parse : JSON 데이터 이후의 예상치 못한 비 공백 문자' – sardo

+0

코드를 표시 할 수 있습니까? jsFiddle이 유용 할 것입니다. –

0

따옴표를 제거하면 유효한 배열 선언입니다. 그런 다음 x 점을 날짜로 변환하는 배열을 순환 할 수 있습니다. 그러나 항상 당신이 구문 분석하는 것이 좋습니다, 당신은 당신의 자바 스크립트에 eval(chartDataPoints)을 바로 할 수 있습니다 - "안전한"방법 인 객체로 문자열을 구문 분석하는 방법이있다 https://github.com/douglascrockford/JSON-js

:

+0

어떻게하면 [[x0, y0], [x1, y1] .... [xn, yn]], [[X0, Y0], [X1, Y1]]을 얻을 수 있도록 MyJsonObject.chartDataPoints에서 따옴표를 제거 할 수 있습니까? ... [Xn, Yn]]? – sardo

+0

@sardo 어떻게 데이터가 처음부터 도착합니까? 자바 스크립트에서 서버 (PHP와 같은 것으로 삽입 됨)에서 다운로드되거나 변수에 저장되는 방식입니까? –

+0

클라이언트가 Ajax 요청을합니다.서버는 JSON 객체를 반환합니다. 여기서 chartDataPoints는 변수의 이름이고 차트 데이터는 값 내에 포함됩니다. – sardo

0

에서보세요 JSON 엔진을 통해 거기에 몇 가지 나쁜 것들이 있어요!

+0

감사합니다. – sardo

관련 문제