2013-04-07 2 views
2

자바 스크립트를 처음 사용하는 경우 상황이 다음과 같습니다. Google 차트를 사용하여 일부 데이터를 시각화하고 데이터가 Elasticsearch에 포함되어 있습니다.JSON 문서를 Google 차트 형식으로 변환

Ajax 명령으로 데이터를 쿼리하고 있지만 반환 된 데이터는 Google 차트에서 현재 형식으로 사용할 수 없습니다. 이 같은

쿼리 데이터를 반환 :

{ 
    "cols": [ 
     {"id":"","label":"Lane","type":"string"}, 
     {"id":"","label":"Routes","type":"number"} 
     ], 
    "rows": [ 
     {"c":[{"v":"M01"},{"v":4657}]}, 
     {"c":[{"v":"M02"},{"v":4419}]}, 
     {"c":[{"v":"M03"},{"v":4611}]}, 
     {"c":[{"v":"M04"},{"v":4326}]}, 
     {"c":[{"v":"M05"},{"v":4337}]}, 
     {"c":[{"v":"M06"},{"v":5363}]} 
     ] 
} 

나는 누군가가 코드를 작성하는 기대하지 않지만 :

{ took: 5 timed_out: false _shards: { total: 5 successful: 5 failed: 0 } hits: { total: 11 max_score: 1 hits: [ { _index: inventory _type: on_hand _id: 4 _score: 1 _source: { warehouse_id: 107 date: 03-28-2013 lane: M01 routes: 383 } }

나는 구글 차트에 대해이 같은 형식이 필요합니다 나에게 필요한 정보를 꺼내는 데 좋은 출발점을 줄 수 있고 "cols": [..."rows":[... 등 적절한 형식을 추가하면 정말 감사하게 생각합니다. 감사합니다!

편집 :

{ 
    "took" : 1, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 7, 
    "max_score" : 1.0, 
    "hits" : [ { 
     "_index" : "wcs", 
     "_type" : "routes", 
     "_id" : "4", 
     "_score" : 1.0, "_source" : {"lane":"M04","routes":"102"} 
    }, { 
     "_index" : "wcs", 
     "_type" : "routes", 
     "_id" : "5", 
     "_score" : 1.0, "_source" : {"lane":"M03","routes":"143"} 
    }, { 
     "_index" : "wcs", 
     "_type" : "routes", 
     "_id" : "1", 
     "_score" : 1.0, "_source" : {"lane":"M07","routes":"80"} 
    }, { 
     "_index" : "wcs", 
     "_type" : "routes", 
     "_id" : "6", 
     "_score" : 1.0, "_source" : {"lane":"M02","routes":"157"} 
    }, { 
     "_index" : "wcs", 
     "_type" : "routes", 
     "_id" : "2", 
     "_score" : 1.0, "_source" : {"lane":"M06","routes":"101"} 
    }, { 
     "_index" : "wcs", 
     "_type" : "routes", 
     "_id" : "7", 
     "_score" : 1.0, "_source" : {"lane":"M01","routes":"105"} 
    }, { 
     "_index" : "wcs", 
     "_type" : "routes", 
     "_id" : "3", 
     "_score" : 1.0, "_source" : {"lane":"M05","routes":"160"} 
    } ] 
    } 
} 

실제로 필요한 JSON 문서를 정확히 할 필요가 그러나

내가 보여준 같이 내가 올바른 JSON 형식으로 결과를 반환하는 업데이트 쿼리를 실행할 수 있었다

Google Charts에서 사용할 수있는 원래 게시물입니다. "lane""routes" 값은 반환 된 데이터 (위 그림 참조)에서 추출하고 원래 게시물의 JSON 문서 형식으로 지정해야합니다. 다시 감사합니다.

+0

그들이 두 개의 서로 다른 객체 정의 모두있어 보인다. 그 속성들을 어떻게 추측해야합니까? – frenchie

+0

서버가 적절한 JSON으로 응답하지 못합니까? 당신이 말하는 형식은별로 친절하지 않습니다. – bfavaretto

+0

쿼리 결과가 여전히 유효한 JSON이 아닙니다. 점점 가까이에. [다음은 요점입니다] (https://gist.github.com/dinjas/d33f89982a326f76235a) JSON이 수정되었습니다. JSON 유효성 검사기 (http://zaach.github.io/jsonlint/)는 JSON이 유효한지 확인하고이를 형식화하는 데 사용할 수 있습니다. – dinjas

답변

1

당신이 뭔가를 할 수 있어야한다 : 속성 이름도 동일하지 않습니다 :

var json = { 
    "took": 2, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 7, 
    "max_score": 1, 
    "hits": [ 
     { 
     "_index": "wcs", 
     "_type": "routes", 
     "_id": "4", 
     "_score": 1, 
     "_source": { 
      "lane": "M04", 
      "routes": "102" 
     } 
     } 
    ] 
    } 
}; 

var data = {}; 
data.cols = [ 
    { 
     "id": "", 
     "label": "Lane", 
     "type": "string" 
    }, 
    { 
     "id": "", 
     "label": "Routes", 
     "type":"number" 
    } 
]; 
data.rows = [ 
    { 
     "c": [ 
      { 
       "v": json.hits.hits[0]._source.lane 
      }, 
      { 
       "v": json.hits.hits[0]._source.routes 
      } 
     ] 
    } 
]; 

console.log(data); 
+0

안녕하세요, 본질적으로 내가 뭘해야 할 것처럼 보이기 때문에이 코드를 사용하려고합니다. 그것은 작동하지 않습니다. 아마도 작은 따옴표가 대괄호와 중괄호에서 생략 되었기 때문일까요? 나는이 시점에서 구문의 문제라고 생각한다. 감사. –

+0

게시 한 쿼리 응답이 유효한 JSON이 아니므로 JSON.parse 호출이 실패하게됩니다. 이러한 결과를 JSON 객체로 가져 오는 것이 첫 번째 단계 일 것입니다. Chrome 디버거'console.log (data);에서 JSON 객체의 내용을 로그 아웃 할 수 있으며 [이 링크] (http://www.json.org/js.html)가 도움이 될 수 있습니다. – dinjas

+0

새 응답 예를 처리하기 위해 내 대답이 업데이트되었습니다. Chrome 디버거에 바로 붙여 넣기하여 테스트해볼 수 있습니다. 방금 JSON 응답을 var에 직접 할당했다고 가정합니다. – dinjas

관련 문제