beego开发的api接口时json格式数据的生成

这篇博客介绍了如何在Go语言中使用beego ORM执行原生SQL查询,并将查询结果转换为JSON数据。示例展示了如何定义User结构体,初始化ORM模型,以及在controller中获取数据库数据并返回JSON响应。
摘要由CSDN通过智能技术生成

以前学PHP,有处理数据强大的数组类型,然,go是的数组是不能用字符串作键值的。但go 有强大的struct 结构,处理起来依然方便。下面来代码:

关于orm处理数据方法参考:在beego开发中使用orm执行原生的sql语句详解_go成长之路-CSDN博客

models.go文件如下:

package models

import (
	"github.com/astaxie/beego/orm"
)

type User struct {
	Id          int  `json:"id" `
	Name    string   `json:"name,omitempty" orm:"size(50)"`
	//Profile []*Profile `json:"profile" orm:"reverse(many)"` // OneToOne relation
}

//type Profile struct {
//	Id     int   `json:"id" `
//	Age  int	`json:"age" `
//	User *User `orm:"rel(fk);index""` // 设置反向关系(可选)
//}

func init() {
	// 需要在 init 中注册定义的 model
	orm.RegisterModel(new(User))
	//orm.RegisterModel(new(User), new(Profile))
}

用struct生成JSON数据的controller.go代码如下:

package controllers

import (
	"fmt"
	"quickstart/models"
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/orm"
	_ "github.com/go-sql-driver/mysql"
	"strconv"
	"math/rand"
)

type IndexController struct {
	beego.Controller
}

type Res struct {
	Code          int
	Data          []models.User    
}


func (c *IndexController) Dbtest() {

	//测试原生SQL执行的方法
	var type1  = c.GetString("type")

	orm1 := orm.NewOrm()
	多行数据映射到结构体贪杯
	fmt.Println(type1)
	var users =  []models.User{}
	n,err  := orm1.Raw("select * from user where id > ?","2").QueryRows(&users)



	if err != nil && n > 0 {
		for _,v := range users {
			c.Ctx.WriteString(strconv.Itoa(v.Id) + "    " + v.Name +  "\n")
		}

		return
	}
	res := Res{}
	res.Code = 200
	res.Data = users
	c.Data["json"] = res
	c.ServeJSON()
}

func init() {

	// 注册驱动
	orm.RegisterDriver("mysql", orm.DRMySQL)
	// 注册默认数据库
	// 我的mysql的root用户密码为tom,打算把数据表建立在名为test数据库里
	// 备注:此处第一个参数必须设置为“default”(因为我现在只有一个数据库),否则编译报错说:必须有一个注册DB的别名为 default
	orm.RegisterDataBase("default", "mysql", "root:root@tcp(127.0.0.1:3306)/godb?charset=utf8")
}

访问生成的json数据:

{
  "Code": 200,
  "Data": [
    {
      "id": 3,
      "name": "tom3"
    },
    {
      "id": 4,
      "name": "tom4"
    },
    {
      "id": 5,
      "name": "tom5"
    }
  ]
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

php、go编程学习实例

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值