为了账号安全,请及时绑定邮箱和手机立即绑定

Go:javascript的格式结构(没有键的json)

Go:javascript的格式结构(没有键的json)

Go
慕的地6264312 2021-12-13 18:27:21
我必须为图表形成一段结构。编组它,然后返回到前端小部件。小部件正在等待这样的格式:[["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:""`}我现在有两个主要问题:如何制作没有键的 json,但只有 2 个带有逗号的值?如何将日期或时间正确转换为 javascript 毫秒?
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

你想要的输出格式:


[["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 以来经过的毫秒数。在 Go 中,您可以time.Time使用其Time.UnixNano()方法从值中获取此值并将其除以1000000(从纳秒中获取毫秒),例如:


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

请注意,为了在 JSON 输出中将时间值作为字符串,您必须将这些时间值作为strings添加到[]ChartElement. 要将此毫秒值转换为string,您可以使用strconv.FormatInt(),例如


t := time.Now().UnixNano() / 1000000

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


查看完整回答
反对 回复 2021-12-13
  • 1 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信