我最近一直在玩Go,它很棒。在浏览文档和博客文章之后,我似乎无法弄清楚的事情是如何将time.Time
类型格式化为我想要的格式,json.NewEncoder.Encode
这是一个最小的代码示例:
package main
type Document struct {
Name string
Content string
Stamp time.Time
Author string
}
func sendResponse(data interface{}, w http.ResponseWriter, r * http.Request){
_, err := json.Marshal(data)
j := json.NewEncoder(w)
if err == nil {
encodedErr := j.Encode(data)
if encodedErr != nil{
//code snipped
}
}else{
//code snipped
}
}
func main() {
http.HandleFunc("/document", control.HandleDocuments)
http.ListenAndServe("localhost:4000", nil)
}
func HandleDocuments(w http.ResponseWriter,r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.Header().Set("Access-Control-Allow-Origin", "*")
switch r.Method {
case "GET":
//logic snipped
testDoc := model.Document{"Meeting Notes", "These are some notes", time.Now(), "Bacon"}
sendResponse(testDoc, w,r)
}
case "POST":
case "PUT":
case "DELETE":
default:
//snipped
}
}
理想情况下,我想发送一个请求并以类似的方式获取“戳记”字段,May 15, 2014
而不是2014-05-16T08:28:06.801064-04:00
但是我不确定如何,我知道我可以添加json:stamp
到文档类型声明中以使用名称戳而不是戳来编码字段,但是我不知道这些类型的东西叫什么,所以我我什至不确定要在Google上查找什么,以了解其中是否还有某种格式设置选项。
是否有人链接到示例或优质文档页面上有关这些类型标记(或称为它们的名称)主题的链接,或者我如何告诉JSON编码器处理time.Time
字段?
仅供参考,我查看了以下页面:这里和这里,当然还有官方文档
您可以做的是,将time.Time包装为您自己的自定义类型,并使其实现Marshaler
接口:
type Marshaler interface {
MarshalJSON() ([]byte, error)
}
因此,您要做的是:
type JSONTime time.Time
func (t JSONTime)MarshalJSON() ([]byte, error) {
//do your serializing here
stamp := fmt.Sprintf("\"%s\"", time.Time(t).Format("Mon Jan _2"))
return []byte(stamp), nil
}
并制作文件:
type Document struct {
Name string
Content string
Stamp JSONTime
Author string
}
并使您的初始化看起来像:
testDoc := model.Document{"Meeting Notes", "These are some notes", JSONTime(time.Now()), "Bacon"}
就是这样。如果您想拆封,也可以使用该Unmarshaler
界面。
问题内容: 在Go中处理不同时间格式的反序列化的合适方法是什么?在仅接受的RFC 3339中,encoding / json包似乎完全僵化。我可以将其反序列化为字符串,将其转换为RFC 3339,然后再将其取消编组,但我真的不想这样做。有更好的解决方案吗? 问题答案: 您将必须在自定义类型上实现/ 接口,并改用一个示例: 编辑 :添加以检查它是否实际设置,以供将来参考。
我在Azure上有一个Databricks5.3集群,它运行Apache Spark 2.4.0和Scala 2.11。 我不是Java/Scala开发人员,也不熟悉Spark/Databricks。我找不到Spark用来解析值的datetime格式化程序。 我尝试的模式:
问题内容: 我使用的是与扩展编辑源代码。每次我想格式化代码时,都必须按on ,on 或输入。是否可以在保存时设置格式,即当我按时,它会使用(或类似方式)自动格式化代码? 问题答案: 您应该安装此插件:https : //github.com/Microsoft/vscode-go。选项之一是在保存时设置“自动格式”:。它使用Golang工具进行格式化。
我有一个名为dispatched_time的日期时间,我从Time.now中减去它,得到一个浮点数ie: 302.332,这是一个名为elapsed_time的方法。我需要找出一种方法来获取这个数字的值,并将其格式化为我认为的时间。即:13:20。 我尝试使用elapsed_time.strftime("%H%M"),但strftime不会处理浮点数。 有人可以帮助我将几秒钟内的浮点数转换为HH:
所以我有一个php页面,我试图让我的GoLang客户端通过POST请求进行通信。php脚本通过key:value进行输入,key:value是message:hello world,希望添加多个键。它适用于我的python脚本,但不适用于golang,所以这里是我到目前为止在golang中的内容。 尝试运行上述代码时收到的错误消息: php脚本是: 我能得到的最佳回复如下:
我在想是否有人能帮我。 我是一个非常新的ASP我想格式化当前的日期和时间如下: 但我能做的只有以下几点 有人能帮我一下吗。