2016-10-22 2 views
0

저는 Polymer Google Charts를 사용하고 있습니다. 하나의 Controller.ServeJSON 호출에 대해 JSON을 만들고 싶지만, 더 좋은 디자인이라면 2 개를 만듭니다.Golang to Json, Google 차트 작성

다음은 JSON이 두 번 호출 한 경우 포함 할 내용의 예입니다.

cols = '[{ "label": "Mth", "유형": "문자열"}, { "레이블": "일", "유형": "번호"}]' rows = '[ [ "월", 31], [ "2월", 28], [ "월", 31] '

을 그리고 한

데이터 = 인 경우'[ "월", "일" ], [ "월", 31], [ "2월", 28], [ "월은"31]] '

https://elements.polymer-project.org/elements/google-chart

에서 찾을 수 있습니다 나는에 JSON 변환 https://mholt.github.io/json-to-go/을 사용 구조체. 두 통화를 가정

이 ..

type Chart struct { 
     Cols []struct { 
      Label string `json:"label"` 
      Type string `json:"type"` 
     } `json:"cols"` 
     Rows []struct { 
      Num0 string `json:"0"` 
      Num1 int `json:"1"` 

모든 도움을 얻었다과 조언을 가장 극명하게 될 것이다.

건배.

EDIT ..

func (c *ChillController) Get() { 

jsonString := "[[\"Month\", \"Days\"], [\"Jan\", 31], [\"Feb\", 28], [\"Mar\", 31]]" 
d := [][]Chart{} 

json.Unmarshal([]byte(jsonString), &d) 

fmt.Printf("%v", &d) 

c.Data["json"] = &d 
c.ServeJSON() 

}

그리고 리턴 ..

[ [ 널, 널 ] [ 널, 널 ] ]

내가 무엇을 놓쳤습니다.

답변

1

나는 항상 JSON - 투 - 이동 내 즐겨 찾기 도구 중 하나입니다 사용하지만, 나는 https://github.com/mholt/json-to-go/issues/18

귀하의 구조체가해야 모습 버그 발견 : 즉 type Chart [][]interface{} 조각의 조각을. 이 질문을 참조 너무 Unmarshall nested JSON Arrays in Go/Golang

편집 : [][]interface{} 슬라이스 때문에 :

보다 구체적인 당신의 그래서 슬프게도 우리는 비슷한 사용해야하는, 문자열과 숫자의 조각의 조각입니다 내가 당신을 쓴 같은 유형을 가져야하고이 경우에는 문자열과 숫자가 있으므로 솔루션은 빈 인터페이스 {}입니다. 또한 항상 진드기를``Json으로 표현하기 위해``틱 (tick)을 사용해보십시오. 더 잘 보이고 따옴표를 벗어날 필요가 없습니다.

jsonString := `[ 
    ["Month", "Days"], ["Jan", 31], ["Feb", 28], ["Mar", 31] 
]` 

var rows [][]interface{} 

err := json.Unmarshal([]byte(jsonString), &rows) 

if err != nil { 
    fmt.Println("error:", err) 
    return 
} 

fmt.Printf("%+v \n\n", rows) 

for _, row := range rows { // each row in this example is just one 

    if len(row) < 2 { 
     fmt.Println("unexpected row len") 
     continue // or return error 
    } 

    // we can access to [0] or [1] 

    month := row[0].(string) // column 1 
    day := row[1]   // column 2 

    if dayNumber, isNumber := day.(float64); isNumber { // by default use the biggest type for numbers float64 
     fmt.Println("Month:", month, "Day number:", dayNumber) 
     continue 
    } 

    if dayStr, isString := day.(string); isString { 
     fmt.Println("Month:", month, "Day string:", dayStr) 
     continue 
    } 
} 

전체 예 : https://play.golang.org/p/ZGtBRqP3Uj

+0

감사합니다. 나는 그것이 보이는 개념을 충분히 이해하지 못한다. 그 변화를 구현하려고했습니다. 위의 편집을 참조하십시오. 나는 무엇이 없는가. –

+0

json에서 '{}'이 맵 구조체를 사용하고 슬라이스에 '[]'을 사용하는 경우 차트 구조체에 슬라이스를 비 정렬 화하려고합니다. 나도 내 대답을 편집 :) –