簡體   English   中英

Go:javascript的格式結構(不帶鍵的json)

[英]Go : format struct for javascript (json without keys)

我必須為圖表形成一部分結構。 封送它,然后返回到前端小部件。 窗口小部件正在等待這樣的格式:

[["1455523840380",1],["1455523840383",2],["1455523840384",3]]

但是我的數據是這樣的:

[{"Time":1.45552462158e+12,"Value":1},{"Time":1.45552462158e+12,"Value2},{"Time":1.45552462158e+12,"Value3}]

我的切片結構如下所示:

type ChartElement struct {
    Time  int `json:""`
    Value int `json:""`
}

我現在有兩個主要的麻煩:

  1. 如何使json沒有鍵,但只有2個值,且它們之間有逗號?
  2. 如何將日期或時間正確轉換為javascript毫秒?

您想要的輸出格式:

[["1455523840380",1],["1455523840383",2],["1455523840384",3]]

在JSON中,它不是結構數組,而是數組數組。

由於“內部”數組具有各種類型(字符串和數字),因此可以像下面這樣建模:

type ChartElement []interface{}

您可以像這樣填充它:

s := []ChartElement{{"1455523840380", 1}, {"1455523840383", 2}, {"1455523840384", 3}}

如果將其封送為JSON:

data, err := json.Marshal(s)
fmt.Println(string(data), err)

輸出是您期望的:

[["1455523840380",1],["1455523840383",2],["1455523840384",3]] <nil>

時間值(例如1455523840380是自1970年1月1日UTC以來經過的毫秒數。 在圍棋,你可以從一個得到這個值time.Time其價值Time.UnixNano()方法,然后除以1000000 (擺脫納秒毫秒),例如:

fmt.Println(time.Now().UnixNano() / 1000000) // Output: 1455526958178

請注意,為了使時間值在JSON輸出中作為字符串,您必須在[]ChartElement中將這些時間值作為string s添加。 要將毫秒值轉換為string ,可以使用strconv.FormatInt() ,例如

t := time.Now().UnixNano() / 1000000
timestr := strconv.FormatInt(t, 10) // timestr is of type string

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM