json数据格式

  • 表示数字
    • image.png
  • 表示一个字符串
    • image.png
  • 表示一个对象
    • image.png
  • 对象中包对象
    • image.png
  • 表示数组
    • image.png
  • 对象数组
    • image.png
  • 二维数组
    • image.png

获取用户信息

  • wxml:

    1. <view class="container">
    2. <view class="userinfo">
    3. <button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
    4. <block wx:else>
    5. <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
    6. <text class="userinfo-nickname">{{userInfo.nickName}}</text>
    7. <text class="userinfo-nickname">{{userInfo.}}</text>
    8. </block>
    9. </view>
    10. <view class="usermotto">
    11. <text class="user-motto">{{motto}}</text>
    12. </view>
    13. </view>
  • js: ```javascript //index.js //获取应用实例 const app = getApp()

Page({ data: { motto: ‘Hello World’, userInfo: {}, hasUserInfo: false, canIUse: wx.canIUse(‘button.open-type.getUserInfo’) }, //事件处理函数 bindViewTap: function() { wx.navigateTo({ url: ‘../logs/logs’ }) }, onLoad: function () { if (app.globalData.userInfo) { this.setData({ userInfo: app.globalData.userInfo, hasUserInfo: true }) } else if (this.data.canIUse){ // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入 callback 以防止这种情况 app.userInfoReadyCallback = res => { this.setData({ userInfo: res.userInfo, hasUserInfo: true }) } } else { // 在没有 open-type=getUserInfo 版本的兼容处理 wx.getUserInfo({ success: res => { app.globalData.userInfo = res.userInfo this.setData({ userInfo: res.userInfo, hasUserInfo: true }) } }) } }, getUserInfo: function(e) { console.log(e) app.globalData.userInfo = e.detail.userInfo this.setData({ userInfo: e.detail.userInfo, hasUserInfo: true }) } })

```

  • app.js
  • 关于获取到的信息的结构(opendid是signature)

image.png

变量