手机微信JSON设置全攻略:从基础到实践
在移动互联网时代,微信作为国民级应用,其开发与集成中常涉及JSON数据的处理,无论是开发微信小程序、公众号后台配置,还是实现微信支付、消息推送等功能,JSON都扮演着“数据交换语言”的核心角色,本文将从JSON的基础概念出发,详解微信生态中JSON的设置方法、常见场景及注意事项,助你快速微信JSON配置技巧。
先搞懂:什么是JSON?为什么微信离不开它?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,以“键值对”(Key-Value Pair)为核心结构,易于人阅读和编写,也便于机器解析和生成,其基本语法规则包括:
- 数据类型:值可以是字符串(用双引号包裹)、数字、布尔值(
true/false)、数组(用方括号[]包裹)、对象(用花括号包裹)或null。 - 键值对:对象中的键必须是字符串,且用双引号包围,值可以是任意JSON支持的类型,如
{"name":"张三", "age":25}。 - 嵌套结构:支持对象嵌套(如
{"user":{"name":"李四", "contact":{"phone":"13800138000"}}})和数组嵌套(如{"hobby":["篮球", "阅读", "编程"]})。
为什么微信常用JSON?
微信生态中的数据交互(如小程序与后端通信、公众号菜单配置、微信支付回调等)需要“通用语言”来规范数据格式,JSON相比XML更简洁(无冗余标签),解析效率更高,且与JavaScript原生兼容,因此成为微信开发的首选数据格式。
微信开发中JSON的常见设置场景
场景1:微信小程序——页面数据与接口交互的“桥梁”
微信小程序的数据渲染、接口请求、本地存储等场景,都离不开JSON的配置。
小程序全局配置(app.json)
app.json是小程序的全局配置文件,使用JSON格式定义窗口表现、页面路径、tab栏等基础信息。
{
"pages": [
"pages/index/index",
"pages/logs/logs"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle": "black"
},
"tabBar": {
"color": "#7A7E83",
"selectedColor": "#3cc51f",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"list": [
{
"pagePath": "pages/index/index",
"iconPath": "images/home.png",
"selectedIconPath": "images/home-active.png",
"text": "首页"
},
{
"pagePath": "pages/logs/logs",
"iconPath": "images/logs.png",
"selectedIconPath": "images/logs-active.png",
"text": "日志"
}
]
}
}
关键设置点:
pages:配置所有页面的路径(按数组顺序,第一个为首页)。window:定义窗口样式(如导航栏标题、背景色、文字颜色等)。tabBar:配置底部标签栏(包含页面路径、图标、文字等)。
页面配置(.json文件)
每个页面目录下可创建index.json(或其他页面名.json)文件,覆盖app.json中的窗口配置,单独设置“首页”的导航栏标题:
{
"navigationBarTitleText": "欢迎来到首页"
}
接口数据交互(wx.request)
小程序通过wx.request与后端API通信,数据格式通常为JSON,请求用户信息并渲染到页面:
// 页面.js文件
Page({
data: {
userInfo: null
},
onLoad() {
wx.request({
url: 'https://api.example.com/user', // 后端接口地址
method: 'GET',
success: (res) => {
if (res.data.code === 0) {
this.setData({
userInfo: res.data.data // 解析JSON数据
});
}
}
});
}
});
后端返回的JSON示例:
{
"code": 0,
"message": "success",
"data": {
"userId": 1001,
"nickname": "微信用户",
"avatarUrl": "https://example.com/avatar.png"
}
}
本地存储(wx.setStorage/wx.getStorage)
小程序通过wx.setStorage将JSON数据存入本地,wx.getStorage读取时自动解析。
// 存储用户信息
wx.setStorage({
key: 'userInfo',
data: {
userId: 1001,
nickname: '微信用户'
}
});
// 读取用户信息
wx.getStorage({
key: 'userInfo',
success: (res) => {
console.log(res.data); // 输出: {userId: 1001, nickname: '微信用户'}
}
});
场景2:微信公众号——菜单、自动回复的“配置手册”
公众号的菜单配置、自动回复、模板消息等功能的设置,均需通过JSON格式提交数据。
自定义菜单配置
公众号自定义菜单支持按钮类型(如点击跳转、扫码、发消息等),通过JSON配置按钮结构,创建一个包含“跳转网页”和“扫码关注”的菜单:
{
"button": [
{
"name": "官网",
"type": "view",
"url": "https://www.example.com"
},
{
"name": "关注我们",
"type": "scancode_waitmsg",
"key": "rselfmenu_0_1",
"sub_button": []
}
]
}
关键设置点:
type:按钮类型(view跳转网页、scancode_waitmsg扫码回复消息、click点击触发事件等)。url:type为view时,需填写跳转链接。key:type为click或scancode_waitmsg时,需定义唯一标识(需在公众号后台配置接口时关联)。
自动回复配置
公众号的“被添加自动回复”“关键词自动回复”等场景,回复内容可支持文本、图片、图文等,需通过JSON结构化描述,设置“被添加自动回复”:
{
"reply_content": "欢迎关注我们的公众号!回复“帮助”获取更多信息~",
"reply_type": "text"
}
图文消息回复示例:
{
"articles": [
{
"title": "公众号使用指南",
"description": "介绍公众号的基本功能和使用方法",
"picurl": "https://example.com/guide.jpg",
"url": "https://www.example.com/guide"
}
],
"reply_type": "news"
}
场景3:微信支付——订单数据的“标准化载体”
微信支付涉及下单、支付结果通知等环节,订单数据需按JSON格式规范传递。
统一下单接口参数
调用微信支付“统一下单”接口时,需提交JSON格式的参数(部分参数需加密处理)。
{
"appid": "wx1234567890abcdef",
"mch_id": "10010000",
"nonce_str": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS",
"sign": "C380BEC2BFD727A4B6845133519F3AD6",
"body": "腾讯充值中心-QQ会员充值",
"out_trade_no": "20150806125346",
"total_fee": 88,
"spbill_create_ip": "123.12.12.123",
"notify_url": "https://www.example.com/pay/notify",
"trade_type": "JSAPI",
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o"
}
关键设置点:
appid:公众号或小程序的AppID。mch_id:商户号。sign:根据参数生成的签名(用于验证数据完整性)。trade_type:交易类型(如JSAPI公众号支付、NATIVE扫码支付等)。
支付结果通知解析
微信支付成功后,服务器会向notify_url推送支付结果数据(JSON格式),需解析并验证签名。



还没有评论,来说两句吧...