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. Latex里面的\newtheorem*{xx}{yy}后面的*是干什么的?

    答案: 加了*表示不标号.例如: 同样使用命令: \begin{prb} xx\end{prb} 1. \newtheorem{prb}{Problem Formulation} → Problem ...

  2. Maven-项目管理(一)_认识Maven

    Maven是什么? Maven是Apache下的项目管理工具,它由纯Java语言开发,可以帮助我们更方便的管理和构建Java项目. 为什么要使用Maven? 1. jar包管理: a) 从Maven中 ...

  3. 简单的SSRF的学习

    自己眼中的SSRF 成因 服务端允许了 可以向其他服务器请求获取一些数据 通过各种协议 http https file等(外网服务器所在的内网进行端口的扫描指纹的识别等) 一SSRF配合redis未授 ...

  4. [CSP-S模拟测试]:物理课(数学)

    题目传送门(内部题144) 输入格式 从$physics.in$读入数据. 第一行一个数$T$,代表有$T$组数据.接下来$T$行每行$4$个浮点数,分别为$\theta,v,d,g$,保留到小数点后 ...

  5. TCP输入 之 tcp_prequeue

    在未开启tcp_low_latency的情况下,软中断将skb送上来,加入到prequeue中,然后 在未启用tcp_low_latency且有用户进程在读取数据的情况下,skb入队到prequeue ...

  6. hdu 1166 线段树 奇兵布阵

    #include<iostream> using namespace std; ; )*];//n个叶子就有2*n-4*n个节点 ]; int n; void getup(int root ...

  7. 依赖注入框架之butterknife

    主页: https://github.com/JakeWharton/butterknife 用途: 主要用来简化各种初始化控件的操作 配置: 1. 在app/build.gradle文件中depen ...

  8. idea将springboot打包成jar或者war

    1.首先在pom.xml中添加下面配置 <groupId>com.melo</groupId> <artifactId>focus</artifactId&g ...

  9. 提升键盘可访问性和AT可访问性

    概述 很多地方比如官网中需要提升 html 的可访问性,我参考 element-ui,总结了一套提升可访问性的方案,记录下来,供以后开发时参考,相信对其他人也有用. 可访问性 可访问性基本上分为 2 ...

  10. spring boot configuration annotation processor not found in classpath

    <dependency> <groupId> org.springframework.boot </groupId> <artifactId> spri ...