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. JVM GC之对象生死

    1.简述 在Java内存运行时区域的各个部分中,程序计数器.虚拟机栈.本地方法栈3个区域随着线程而生,随着线程而亡.栈中的栈帧随着方法的进入和退出而有条不紊的进行着入栈和出栈操作. 每个栈帧需要分配多 ...

  2. Linux 搭建Mysql主从节点复制

    Linux环境 Centos 6.6 64位 准备两台服务器,搭建一主一从,实现Mysql的读写分离和数据备份 主节点 192.168.43.10 leader 从节点 192.168.43.20 d ...

  3. python进程间的通信

    from multiprocessing import Queue, Process import time, random # 要写入的数据 list1 = ["java", & ...

  4. 踩坑之SpringBoot WebSocker 部署Tomcat冲突

    启动tomcat容器,部署SpringBoot项目,启动项目报错,如下图: 看1.2的顺序就知道是WebSocket冲突了. 上网找了一下资料发现,使用@ServerEndpoint创立websock ...

  5. TCP输入 之 tcp_prequeue

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

  6. Java-GC 垃圾收集算法

    程序计数器.虚拟机栈.本地方法栈随线程而生,随线程而灭. 栈帧随着方法的开始而入栈,随着方法的结束而出栈. 这几个区域的内存分配和回收都具有确定性,在这几个区域内不需要过多考虑回收的问题,因为方法结束 ...

  7. JS遍历OCX方法

    /----查看OCX组件的属性 <html> <head> <title>OCX</title> <meta http-equiv="C ...

  8. Android studio 项目支持JNI方法

    步骤: 1. build.gradle 配置如下,主要两项 ndk 和 sourceSets apply plugin: 'com.android.application' android { com ...

  9. WPF Slider Tickbar 中显示数值

    class CustomTickBar : TickBar { protected override void OnRender(System.Windows.Media.DrawingContext ...

  10. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_8 响应json数据之响应json格式数据

    springMvc的框架已经帮我们做好了.发过来的数据转换为javaBean对象 发过来的键值的形式,如果属性和javaBean对应的话,可以直接封装到对象中. key做额外的转换的时候,需要另外的j ...