model里

package model

type Setting struct {
Key string `gorm:"primary_key" json:"key"`
Value string `json:"value"`
} // @desc 按Key获设置
func (Setting *Setting) GetSettingInfo(Key string) (setting Setting) {
db.Model(&Setting).Where("`key` = ?", Key).First(&setting)
return
}

controller里

一.2层数据

1.普通方法:

控制器里

package Controller

import (
"encoding/json"
"github.com/Unknwon/com"
. "github.com/gin-gonic/gin"
"linkbook.com/LinkBookGo/App/model"
"linkbook.com/LinkBookGo/lib/httpext"
) var SettingModel = model.Setting{} //认证展示页面选卡
type CommonParam struct {
CashOutMoneyFeerate int `json:"cash_out_money_feerate"`
}
//获取常用配置参数
/**
* 提现手续费
* 请求方式 [GET]
* 线上请求地址 https://api.ibanana.club/setting/get_setting?key=common_param
* 本地请求地址 http://localhost:8811/setting/get_setting?key=common_param
* token [string] [必填] 写在Header头里
* Author Haima
*/
func GetSetting(context *Context) {
Key := com.StrTo(context.DefaultQuery("key", "")).String()
setting_info1 := SettingModel.GetSettingInfo(Key)
var CommonParamList CommonParam
json.Unmarshal([]byte(setting_info1.Value),&CommonParamList)
httpext.SuccessExt(context, CommonParamList)
}

返回数据:

{
"data": [
{
"time": 10,
"pre_num": 10,
"gold_coin_num": 100
},
{
"time": 20,
"pre_num": 20,
"gold_coin_num": 200
},
{
"time": 30,
"pre_num": 30,
"gold_coin_num": 300
},
{
"time": 40,
"pre_num": 40,
"gold_coin_num": 400
},
{
"time": 50,
"pre_num": 50,
"gold_coin_num": 500
},
{
"time": 70,
"pre_num": 70,
"gold_coin_num": 700
}
],
"errmsg": "ok",
"errno": 200
}

二.2层数据

func CashoutMoneyList(ctx *Context) {
setting_info1 := SettingModel.GetSettingInfo("cash_out_money_list")
//认证展示页面选卡
type cashoutMoney struct {
ID int `json:"id"`
Money int `json:"money"`
GoldCoin int `json:"gold_coin"`
SignInDays int `json:"sign_in_days"`
InvitePerNum int `json:"invite_per_num"`
} var cashoutMoneyList []cashoutMoney
json.Unmarshal([]byte(setting_info1.Value),&cashoutMoneyList) type cashoutRes struct {
CashOutMoneyFeerate int `json:"cash_out_money_feerate"`
List []cashoutMoney `json:"cashout_money_lists"`
}
res := cashoutRes{
CashOutMoneyFeerate:10,
List:cashoutMoneyList,
}
httpext.SuccessExt(ctx, res)
}

返回结果:

{
"data": {
"cash_out_money_feerate": 10,
"cashout_money_lists": [
{
"id": 1,
"money": 1,
"gold_coin": 100,
"sign_in_days": 3,
"invite_per_num": 3
},
{
"id": 2,
"money": 2,
"gold_coin": 200,
"sign_in_days": 6,
"invite_per_num": 6
},
{
"id": 3,
"money": 3,
"gold_coin": 300,
"sign_in_days": 9,
"invite_per_num": 9
},
{
"id": 4,
"money": 4,
"gold_coin": 400,
"sign_in_days": 12,
"invite_per_num": 12
},
{
"id": 5,
"money": 5,
"gold_coin": 500,
"sign_in_days": 15,
"invite_per_num": 15
}
]
},
"errmsg": "ok",
"errno": 200
}

方法 2:返回kv形式的

controller.go里

func GetCompanyList(ctx *Context) {
companyName := ctx.Query("company_name")
page := com.StrTo(ctx.DefaultQuery("page", "1")).MustInt()
row := com.StrTo(ctx.DefaultQuery("row", "10")).MustInt()
offset := (page - 1) * row
cm := model.Company{}
companyList := cm.GetCompaniesLikeName(companyName, offset, row)
companyMap := make(map[int]string)
for _, v := range companyList {
companyMap[v.ID] = v.CompanyName
}
res := make(map[string]interface{})
res["list"] = companyMap
httpext.SuccessExt(ctx, res)
}

model.go里

func (c *Company) GetCompaniesLikeName(name string, offset int, row int) (companies []Company) {
db.Model(c).Where("company_name like ?", "%"+name+"%").Offset(offset).Limit(row).Find(&companies)
return
}

返回参数:

{
"data": {
"9": "北京陶然雅居古典家具有限公司",
"12": "北京理工至信技术开发有限公司",
"13": "北京市汇丰通达贸易有限责任公司",
"14": "北京亿翔工程技术有限公司",
"20": "北京金裕腾达商贸有限公司",
"22": "北京同一首歌传媒广告有限公司",
"34": "北京祥昌华通通信器材有限公司",
"40": "北京启迅网安科技有限公司上海分公司",
"44": "北京芝麻视界教育科技有限公司",
"47": "北京亚环传媒科技有限公司"
},
"errmsg": "ok",
"errno": 200
}

golang 组装返回json数据,提供api接口的更多相关文章

  1. JSON API免费接口 各种提供JSON格式数据返回服务网站的API接口

    这里为大家搜集了一些能够返回JSON格式的服务接口.部分需要用JSONP调用. 电商接口 京东获取单个商品价格接口: http://p.3.cn/prices/mgets?skuIds=J_商品ID& ...

  2. Web API返回JSON数据

    对Web API新手来说,不要忽略了ApiController 在web API中,方法的返回值如果是实体的话实际上是自动返回JSON数据的例如: 他的返回值就是这样的: { "Conten ...

  3. java通过url调用远程接口返回json数据

    java通过url调用远程接口返回json数据,有用户名和密码验证, 转自 https://blog.csdn.net/wanglong1990421/article/details/78815856 ...

  4. 亿级用户下的新浪微博平台架构 前端机(提供 API 接口服务),队列机(处理上行业务逻辑,主要是数据写入),存储(mc、mysql、mcq、redis 、HBase等)

    https://mp.weixin.qq.com/s/f319mm6QsetwxntvSXpKxg 亿级用户下的新浪微博平台架构 炼数成金前沿推荐 2014-12-04 序言 新浪微博在2014年3月 ...

  5. C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法

    这几天,调用别人接口返回json数据含有特殊符号(双引号),当转换成json对象总是报错, json字符格式如下 { "BOXINFO":[ { ", "ITE ...

  6. (2)Spring Boot返回json数据【从零开始学Spring Boot】

    在做如下操作之前,我们对之前的Hello进行简单的修改,我们新建一个包com.kfit.test.web 然后新建一个类HelloControoler, 然后修改App.java类,主要是的这个类就是 ...

  7. Spring MVC返回json数据给Android端

    原先做Android项目时,服务端接口一直是别人写的,自己拿来调用一下,但下个项目,接口也要自己搞定了,我想用Spring MVC框架来提供接口,这两天便抽空浅学了一下该框架以及该框架如何返回json ...

  8. C#从http上拿返回JSON数据

    C#如何拿到从http上返回JSON数据? 第一章:C#如何拿到从http上返回JSON数据? 第二章:C#如何解析JSON数据?(反序列化对象) 第三章:C#如何生成JSON字符串?(序列化对象) ...

  9. 前台返回json数据的常用方式+常用的AJAX请求后台数据方式

    我个人开发常用的如下所示: 之所以像下面这样下,一是前台Ajax,二是为安卓提供接口数据 现在常用的是返回JSON数据,XML的时代一去不复返 JSON相对于XML要轻量级的多 对JSON不是十分熟悉 ...

随机推荐

  1. BZOJ1123 BLO

    割点的好题. 联通图,难度降低.首先对于一个点,如果他不是割点,那它的贡献是2*(n-1),就是任何一个其他节点都少了正反两个数对,这个看样例可以看出来. 如果它是一个割点,去掉他以后会出现若干个联通 ...

  2. leetcode题目17.电话号码的字母组合(中等)

    题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23"输出: ...

  3. Java实现字串统计

    对字符串的操作,无论再难的算法题,只要时间充足,相信每个同学都可以搞定. 但是浪费太多时间去搞一个逻辑算法没太大意义,学会学习,不但可以增长自己的知识,更可以节省时间,俗话说,一寸光阴一寸金,寸金难买 ...

  4. -webkit-scrollbar 的使用,滚动条的隐藏

    滚动条的隐藏 -webkit-scrollbar 是一个伪类选择器 设置滚动条的样式 例如滚动条的隐藏 元素::-webkit-scrollbar{ width:0; }

  5. 取得远端相应Json并转化为Java对象一

    JDK:1.8.0_212 IDE:STS4(Spring Tool Suit4 Version: 4.3.2.RELEASE) 工程下载:https://files.cnblogs.com/file ...

  6. 把java项目打包成jar包并可以直接运行【我】

    首先创建一个maven的jar项目,然后代码写好后,在项目右键,导出: 选择java下面的可运行的jar文件: 下一步: 要注意的是: launch configuration 此选项是指定选中要导出 ...

  7. IDEA下启动tomcat非常慢

    笔者遇到的原因是在setclasspath.bat里面添加了参数 set JAVA_OPTS="-XX:-UseSplitVerifier -noverify -Djava.net.pref ...

  8. ListView中用鼠标拖动各项上下移动的问题。(100分)

    在OnDragDrop事件中處理:以下是delphi的例子 procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integ ...

  9. 【转】Java从hdfs上读取文件中的某一行

    [From]https://blog.csdn.net/u010989078/article/details/51790166 package test; import java.io.Buffere ...

  10. [转] ansible批量执行命令展示

    [From] https://blog.csdn.net/zhydream77/article/details/81223805 ansible命令基础 • ansible <host-patt ...