2012-09-04 3 views
0

현재 morris.js를 사용하여 그래프를 만들려고합니다. 하나의 JSON 객체를 받았고 다른 객체처럼 보이게 할 필요가있다. Morris.js는 다음과 같은 배열이 필요합니다.변수 필드가있는 json 객체 만들기

var day_data = [ 
     {"period": "2012-10-01", "licensed": 3407, "sorned": 660}, 
     {"period": "2012-09-17", "licensed": 3171, "sorned": 660}, 
     {"period": "2012-09-16", "licensed": 3171, "sorned": 676}, 
     {"period": "2012-09-15", "licensed": 3201, "sorned": 656}, 
     {"period": "2012-09-10", "licensed": 3215, "sorned": 622} 
     ]; 

여기는 개체가 혼란 스러울 때 표시되는 링크입니다. 해당 사이트의 첫 번째 그래프 데이터의 축약 버전이어야합니다. http://oesmith.github.com/morris.js/ . 그것의 매우 단순한 기간은 x 좌표이며, 라이센스가 부여되고 발급 된 것은 대응하는 행에 대한 y 좌표입니다. 여기

내가 keyValuePairs에서 모든 데이터를 추출하고 키워드와 연관시킬 필요가
var trendline = {"command":[ 
    {"keyValuePairs":["2012-08-10 22:00:00|1884978","2012-08-10 21:00:00|3135378","2012-08-10 18:00:00|2541438","2012-08-09 20:00:00|647082","2012-08-10 19:00:00|3194772","2012-08-09 16:00:00|2782140","2012-08-10 20:00:00|3669924"], 
    "keyword":"Obama"}, 
    {"keyValuePairs":["2012-08-10 22:00:00|1884978","2012-08-10 21:00:00|3135378","2012-08-10 18:00:00|2541438","2012-08-09 20:00:00|647082","2012-08-10 19:00:00|3194772","2012-08-09 16:00:00|2782140","2012-08-10 20:00:00|3669924"], 
    "keyword":"Romney"}]} 

를 제공하고있는 데이터 그래서

{"period": "2012-10-01", "Obama": 1884978, "Romney": 1884978}, 
... 
... 

내가 얻을 알고있는 첫 번째 배열과 같은 추세선 JSON 개체에서 데이터를하지만 나는 morris.js 플러그인이 사용할 수있는 새로운 JSON 개체를 생성하는 방법을 모른다. 더 구체적으로 변수를 사용하여 JSON 객체를 만드는 방법을 모르겠습니다.

trendline.dog = [cat]; 

필드 dog를 값 cat으로 설정하여 json 개체를 만듭니다. 그러나, 나는 각 키워드 (오바마, romney ... 등)을 가지고 그것에 관련된 필드를 가지고 그것에 가치를 설정해야합니다. 필드 수 또는 이름이 무엇인지 모르기 때문에이 개체를 만드는 방법을 모르겠습니다.

데이터를받는 방식을 변경할 수 없다고 가정합니다. 또한 필자는 필자의 예처럼 두 개의 키워드 (오바마/롬니) 만 제공하거나 y- 값에 대한 키워드를 여러 개 부여 할 수있었습니다.

오랫동안 죄송합니다. 어떤 도움을 주시면 감사하겠습니다. 시간 내 줘서 고마워.

+0

무엇'객체 trendline'에 대한 최종 데이터 것입니까? '{ "period": "2012-10-01", "Obama": 1884978, "Romney": 1884978}이 어떻게 그것으로부터 추출되는지 조금 혼란 스럽습니다. – timidboy

답변

1

여기에 크리스마스 선물이 있습니다.

<script type="text/javascript"> 
var trendline = 
    { 
     "command": [ 
     { 
      "keyValuePairs": 
       [ 
       "2012-08-10 22:00:00|1884978", 
       "2012-08-10 21:00:00|3135378", 
       "2012-08-10 18:00:00|2541438", 
       "2012-08-09 20:00:00|647082", 
       "2012-08-10 19:00:00|3194772", 
       "2012-08-09 16:00:00|2782140", 
       "2012-08-10 20:00:00|3669924" 
       ], 
      "keyword": "Obama" 
     }, 
     { 
      "keyValuePairs": 
       [ 
        "2012-08-10 22:00:00|1884978", 
        "2012-08-10 21:00:00|3135378", 
        "2012-08-10 18:00:00|2541438", 
        "2012-08-09 20:00:00|647082", 
        "2012-08-10 19:00:00|3194772", 
        "2012-08-09 16:00:00|2782140", 
        "2012-08-10 20:00:00|3669924" 
       ], 
      "keyword": "Romney" 
     }] 
    } 
var cmd = trendline.command, 
    day_data = [], 
    split, 
    date, 
    num, 
    obj; 
// 
for (var i = 0; i < cmd.length; i++) { 
    // 
    if (i == 1) { break; }; 
    // 
    for (var ii = 0; ii < cmd[i].keyValuePairs.length; ii++) { 
     //debugger 
     split = cmd[i].keyValuePairs[ii].split('|'); 
     date = split[0].substring(0, split[0].indexOf(' ')); 
     num = split[1]; 

     obj = {}; 
     obj['period'] = date; 
     //Can 1 
     obj[cmd[i].keyword] = num; 
     // 
     split = cmd[i + 1].keyValuePairs[ii].split('|'); 
     num = split[1]; 
     //Can 2 
     obj[cmd[i + 1].keyword] = num; 
     // 
     day_data.push(obj); 
    }; 
}; 

+0

나는 내 일이 아니지만 이것을 보면서 좋았을 것 같다. 현재 주셔서 감사합니다 :) –

관련 문제