最近很多小伙伴都在问有没有办法在golang中格式化此json?和golang格式化输出这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展jsonp–有没有办法在Github页面上启
最近很多小伙伴都在问有没有办法在golang中格式化此json?和golang 格式化输出这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展jsonp – 有没有办法在Github页面上启用CORS?、string – 有没有办法在Ada中格式化文本输出、『Golang』在Golang中使用json、在Go / Golang中解组嵌套的JSON数组等相关知识,下面开始了哦!
本文目录一览:- 有没有办法在golang中格式化此json?(golang 格式化输出)
- jsonp – 有没有办法在Github页面上启用CORS?
- string – 有没有办法在Ada中格式化文本输出
- 『Golang』在Golang中使用json
- 在Go / Golang中解组嵌套的JSON数组
有没有办法在golang中格式化此json?(golang 格式化输出)
我今天才刚刚开始学习GoLang,我正在尝试构建一个简单的Rest API Web服务器。
这是我希望将每个请求发送到Web服务器的响应结构:
package maintype HttpResp struct{ Status int `json:"status"` Description string `json:"description"` Body string `json:"body"`}
这是我的 articles.go 文件,该文件具有获取数据库中所有文章的功能:
package mainimport ( "encoding/json" "net/http" "log")type Article struct{ Id string `json:"id"` Title string `json:"title"` Body string `json:"body"` Description string `json:"description"`}func AllArticles(w http.ResponseWriter, r *http.Request){ log.Print("/articles - GET") db := connect() defer db.Close() var articles []Article results, err := db.Query("SELECT * FROM Articles") if err != nil{ log.Print(err) return } for results.Next(){ var article Article err = results.Scan(&article.Title, &article.Description, &article.Body, &article.Id) if err != nil{ serr, _ := json.Marshal(err) json.NewEncoder(w).Encode(HttpResp{Status: 500, Description: "Failed to retrieve all articles", Body: string(serr)}) } articles = append(articles, article) } sarr, _ := json.Marshal(articles) w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(HttpResp{Status: 200, Body: string(sarr)})}
我在这里面临的问题是响应是这样的:
{“状态”:200,“描述”:“”,“正文”:“ [{\” id \“:\” 1 \“,\”标题\“:\”第一\“,\”正文\“
:\“这是一个测试主体\”,\“说明\”:\“这是一个测试\”}]“}
我希望正文只是JSON,而不是字符串。我该如何实现?
答案1
小编典典没有必要将 尸体 与 尸体
分开编组HttpResp
。而是将Body
字段的类型更改为interface{}
,然后将该字段设置为与json字符串相对的具体类型的任何值,例如[]Article
,然后将resp编组一次。
type HttpResp struct{ Status int `json:"status"` Description string `json:"description"` Body interface{} `json:"body"`}
其余的…
package mainimport ( "encoding/json" "net/http" "log")type Article struct{ Id string `json:"id"` Title string `json:"title"` Body string `json:"body"` Description string `json:"description"`}func AllArticles(w http.ResponseWriter, r *http.Request){ log.Print("/articles - GET") db := connect() defer db.Close() var articles []Article results, err := db.Query("SELECT * FROM Articles") if err != nil{ log.Print(err) return } for results.Next(){ var article Article err = results.Scan(&article.Title, &article.Description, &article.Body, &article.Id) if err != nil{ serr, _ := json.Marshal(err) json.NewEncoder(w).Encode(HttpResp{Status: 500, Description: "Failed to retrieve all articles", Body: string(serr)}) } articles = append(articles, article) } w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(HttpResp{Status: 200, Body: articles})}
jsonp – 有没有办法在Github页面上启用CORS?
有没有办法为Github页面启用CORS?
另一个选择是将文件存储在Gists中,并使用与CORS协同工作的Github API.
第三种可能性是不将文件存储在Github页面上,而是将其托管在启用了CORS的S3 / Cloudfront发行版上.
string – 有没有办法在Ada中格式化文本输出
我正在尝试获得以下输出的漂亮视图
1: Ashley | 01033438392 | Wellington,New Zealand | 1987- 4-14 2: Aloha | 01087651234 | Hawaii,United States of America | 1988- 9-23 3: Jack | 01082840184 | Beijing,China | 1989- 6-19
如果我用C语言编程,我会做类似的事情
printf("%10s | %11s | %20s | %4d-%2d-%2d\n",name,phone,address,year,month,day);
是否有可能在Ada 05中进行这种格式化?
PS请忽略姓名,电话号码,地址和生日.我在30秒内完成了它们……
解决方法
我通常会做的是编写单独的程序来处理更复杂的输出,例如:为了清楚起见,将日期与其余字符串处理一起使用.
package Integer_IO is new Ada.Text_IO.Integer_IO (Integer); procedure Output_Date ( Day : in Integer; Month: in Integer; Year: in Integer) is begin Integer_IO.Put(Item => Day,Width => 2); Text_IO.Put("-"); Integer_IO.Put(Item => Month,Width => 2); Text_IO.Put("-"); Integer_IO.Put(Item => Year,Width => 4); end Output_Date; procedure Output_String ( Item : in String; Width : in Integer; Separator : in String := "|"; Truncate : Boolean := False) is Field_Index : Integer := Text_IO.Col; begin if Item'length > Width and Truncate then Text_IO.Put(Item(1..Width) & Separator); else Text_IO.Put(Item) & Separator; end if; Text_IO.Set_Col ( Field_Index + Width + 1 ); end Output_String;
这将强制执行固定长度字段,这将允许截断长字符串,或者将后续条目移动到下一行. Set_Col将设置下一次写入的行位置,如果当前写入位置已超过请求的位置,则可能将其置于下一行.
我把字符串截断作为一个机会使用数组切片和Text_IO的输出操作,但我通常不是默认截断的粉丝,因为允许字符串超出请求的宽度或下一行的缩进往往会使格式错误更多明显.
因此,根据上面的代码,打印出类似于第一行的内容可能看起来像:
Name : String := "Ashley" Phone : String := "01033438392" Address: String := "Wellington,New Zealand" Day : Integer := 14; Month : Integer := 4; Year : Integer := 1987; Output_String(Item=> Name,Width => 10); Output_String(Item=> Phone,Width => 11); Output_String(Item=> Address,Width => 20); Output_Date(Day,Month,Year);
Ada中的文本IO通常很麻烦,但通常具有使您正在做的事情相对清晰的优点.
『Golang』在Golang中使用json
由于要开发一个小型的web应用,而web应用大部分都会使用json作为数据传输的格式,所以有了这篇文章。
包引用
import ( "encoding/json" "github.com/bitly/go-simplejson" // for json get )
用于存放数据的结构体
type MyData struct { Name string `json:"item"` Other float32 `json:"amount"` }
这里需要注意的就是后面单引号中的内容。
`json:"item"`
这个的作用,就是Name字段在从结构体实例编码到JSON数据格式的时候,使用item作为名字。算是一种重命名的方式吧。
编码JSON
var detail MyData detail.Name = "1" detail.Other = "2" body,err := json.Marshal(detail) if err != nil { panic(err.Error()) }
我们使用Golang自带的encoding/json包对结构体进行编码到JSON数据。
json.Marshal(...)
JSON解码
由于Golang自带的json包处理解码的过程较为复杂,所以这里使用一个第三方的包simplejson进行json数据的解码操作。
js,err := simplejson.NewJson(body) if err != nil { panic(err.Error()) } fmt.Println(js)
完!
在Go / Golang中解组嵌套的JSON数组
嗨,我在解组嵌套的JSON数组时遇到问题。我应该创建什么结构?我想避免使用interface{}
尽可能多的东西,但是我真的不知道在这种情况下是否有可能。
杰森,我想解组:
"[[[{\"aaa\": \"aaa\"}]]]"
和我想用来解组的结构:
type SomeStructNestedNested struct { Aaa string `json:"aaa"`}type SomeStructNested struct { SomeStructNestedNested []SomeStructNestedNested}type SomeStruct struct { SomeStructNested []SomeStructNested}
链接到示例:https :
//play.golang.org/p/owuMptNrix
答案1
小编典典是的,答案只是一小部分:
type AutoGenerated [][][]struct { Aaa string `json:"aaa"`}
好感谢你的问题,我发现这个错误的工具,我总是用它的Json操作一起去,它可以为你节省很多无聊的时间的,也最好是使用蜱``代表JSON字符串喜欢这里
关于有没有办法在golang中格式化此json?和golang 格式化输出的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于jsonp – 有没有办法在Github页面上启用CORS?、string – 有没有办法在Ada中格式化文本输出、『Golang』在Golang中使用json、在Go / Golang中解组嵌套的JSON数组等相关知识的信息别忘了在本站进行查找喔。
本文标签: