今天做一個視頻接口對接,發現對方提供的文檔沒有json格式,無法自動生成請求和響應對象
json自動生成C#類的工具
http://tool.sufeinet.com/Creater/JsonClassGenerator.aspx
所以拿到對方文檔表格之後,寫了這個js工具,自動生成C#類屬性和註釋,省去了敲無效代碼的麻煩
接口地址
https://doc.bokecc.com/live/live_http.html
對方文檔格式
我們需要的字段屬性格式,上面是字段註釋,下面是屬性名和json的key
/// <summary> /// CC賬戶ID /// </summary> [JsonProperty("userid")] public string Userid { get; set; }
如果我們一個字段一個字段的敲,得弄到猴年馬月去,copy也挺費勁的
所以我們將對方的table直接複製到一個html裏,寫下面的js代碼
<!DOCTYPE html> <html> <head> <meta charset="GB2312"> <title></title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> <script> $(document).ready(function(){ var log = ""; $('table').eq(0).find('tr').each(function () { var demo = '\ /// <summary>\r\n\ /// @@desc@@\r\n\ /// </summary>\r\n\ [JsonProperty("@@name@@")]\r\n\ public string @@nameuper@@ { get; set; }\r\n\ '; var td = $(this).find('td'); var name = td.eq(0).html(); var nameuper = name.charAt(0).toUpperCase() + name.slice(1); var desc = td.eq(1).html() + " " + td.eq(2).html(); demo = demo.replace('@@name@@', name); demo = demo.replace('@@nameuper@@', nameuper); demo = demo.replace('@@desc@@', desc); log = log + demo + '\r\n'; }) console.log(log); }); </script> </head> <body> <table width="900px"> <tbody> <tr style="background:#F60;color:#FFF"> <td>參數</td> <td>說明</td> <td width="20%">備註</td> </tr> <tr> <td>userid</td> <td>CC賬戶ID</td> <td></td> </tr> <tr> <td>name</td> <td>直播間名稱,最大字符40</td> <td></td> </tr> <tr> <td>desc</td> <td>直播間描述,最大字符5000</td> <td></td> </tr> <tr> <td>templatetype</td> <td>直播模板類型,請求模板信息接口可獲得模板類型的詳細信息。</td> <td></td> </tr> <tr> <td>authtype</td> <td>驗證方式,0:接口驗證,需要填寫下面的checkurl;1:密碼驗證,需要填寫下面的playpass;2:免密碼驗證</td> <td></td> </tr> <tr> <td>publisherpass</td> <td>推流端密碼,即講師密碼</td> <td></td> </tr> <tr> <td>assistantpass</td> <td>助教端密碼</td> <td></td> </tr> <tr> <td>playpass</td> <td>播放端密碼</td> <td>可選</td> </tr> <tr> <td>checkurl</td> <td>驗證地址</td> <td>可選</td> </tr> <tr> <td>barrage</td> <td>是否開啓彈幕。0:不開啓;1:開啓</td> <td>可選,默認爲0</td> </tr> <tr> <td>foreignpublish</td> <td>是否開啓第三方推流。0:不開啓;1:開啓</td> <td>可選,默認爲0,開啓時必須開啓網頁登錄的主持人模式</td> </tr> <tr> <td>openlowdelaymode</td> <td>開啓直播低延時模式。0:不開啓;1:開啓</td> <td>可選,默認爲0</td> </tr> <tr> <td>showusercount</td> <td>在頁面顯示當前在線人數。0:不顯示;1:顯示</td> <td>可選,默認顯示當前人數,模板一暫不支持此設置</td> </tr> <tr> <td>openhostmode</td> <td>開啓主持人模式,"0"表示不開啓;"1"表示開啓</td> <td>可選,默認爲0,開通主持人模式權限後方可設置</td> </tr> <tr> <td>hostloginmode</td> <td>主持人登錄模式,"0"表示網頁登錄;"1"表示客戶端登錄</td> <td>可選,默認爲0</td> </tr> <tr> <td>warmvideoid</td> <td>插播暖場視頻,填寫同一賬號下雲點播視頻vid</td> <td>可選,默認關閉;參數值爲空,表示關閉</td> </tr> <tr> <td>livestarttime</td> <td>直播開始時間;格式:yyyy-MM-dd HH:mm:ss</td> <td>可選,默認爲空</td> </tr> <tr> <td>playerbackgroundhint</td> <td>播放器提示語。未直播時播放器將顯示該提示語</td> <td>可選,最多15個字符</td> </tr> <tr> <td>manuallyrecordmode</td> <td>手動錄製模式。0:關閉;1:開啓</td> <td>可選,默認關閉</td> </tr> <tr> <td>clientdocpermissions</td> <td>講師文檔權限。0:關閉;1:開啓</td> <td>可選,默認關閉;</td> </tr> <tr> <td>repeatedloginsetting</td> <td>重複登錄設置;0:允許後進入者登錄;1:禁止後進入者登錄,對講師端和觀看端生效</td> <td>可選,默認0</td> </tr> <tr> <td>maxaudiencenum</td> <td>直播間併發人數上限</td> <td>可選,默認爲0,表示不做限制</td> </tr> <tr> <td>documentdisplaymode</td> <td>文檔顯示模式。1:適合窗口;2:適合寬度</td> <td>可選,適合窗口</td> </tr> <tr> <td>openlivecountdown</td> <td>倒計時功能。0:關閉;1:開啓</td> <td>可選,默認關閉</td> </tr> <tr> <td>showlectueronlinenum</td> <td>講師端顯示在線人數。0:不顯示;1:顯示</td> <td>可選,默認顯示</td> </tr> <tr> <td>showassistonlinenum</td> <td>助教主持人端顯示在線人數。0:不顯示;1:顯示</td> <td>可選,默認顯示</td> </tr> <tr> <td>openmarquee</td> <td>跑馬燈功能。0:關閉;1:開啓</td> <td>可選,默認爲0</td> </tr> <tr> <td>alarms</td> <td>直播提醒設置,格式如下:[{"time":"","desc":""},{"time":"","desc":""},{"time":"","desc":""}] time爲提醒時間點(單位:分鐘),類型爲字符串,取值範圍1-1000的整數;desc爲提醒內容,類型爲字符串,最多20個字符</td> <td>可選,默認爲空</td> </tr> </tbody> </table> </body> </html>
通過自己組織console log的內容,生成代碼
/// <summary> /// 說明 備註 /// </summary> [JsonProperty("參數")] public string 參數 { get; set; } /// <summary> /// CC賬戶ID /// </summary> [JsonProperty("userid")] public string Userid { get; set; } /// <summary> /// 直播間名稱,最大字符40 /// </summary> [JsonProperty("name")] public string Name { get; set; } /// <summary> /// 直播間描述,最大字符5000 /// </summary> [JsonProperty("desc")] public string Desc { get; set; } /// <summary> /// 直播模板類型,請求模板信息接口可獲得模板類型的詳細信息。 /// </summary> [JsonProperty("templatetype")] public string Templatetype { get; set; } /// <summary> /// 驗證方式,0:接口驗證,需要填寫下面的checkurl;1:密碼驗證,需要填寫下面的playpass;2:免密碼驗證 /// </summary> [JsonProperty("authtype")] public string Authtype { get; set; } /// <summary> /// 推流端密碼,即講師密碼 /// </summary> [JsonProperty("publisherpass")] public string Publisherpass { get; set; } /// <summary> /// 助教端密碼 /// </summary> [JsonProperty("assistantpass")] public string Assistantpass { get; set; } /// <summary> /// 播放端密碼 可選 /// </summary> [JsonProperty("playpass")] public string Playpass { get; set; } /// <summary> /// 驗證地址 可選 /// </summary> [JsonProperty("checkurl")] public string Checkurl { get; set; } /// <summary> /// 是否開啓彈幕。0:不開啓;1:開啓 可選,默認爲0 /// </summary> [JsonProperty("barrage")] public string Barrage { get; set; } /// <summary> /// 是否開啓第三方推流。0:不開啓;1:開啓 可選,默認爲0,開啓時必須開啓網頁登錄的主持人模式 /// </summary> [JsonProperty("foreignpublish")] public string Foreignpublish { get; set; } /// <summary> /// 開啓直播低延時模式。0:不開啓;1:開啓 可選,默認爲0 /// </summary> [JsonProperty("openlowdelaymode")] public string Openlowdelaymode { get; set; } /// <summary> /// 在頁面顯示當前在線人數。0:不顯示;1:顯示 可選,默認顯示當前人數,模板一暫不支持此設置 /// </summary> [JsonProperty("showusercount")] public string Showusercount { get; set; } /// <summary> /// 開啓主持人模式,"0"表示不開啓;"1"表示開啓 可選,默認爲0,開通主持人模式權限後方可設置 /// </summary> [JsonProperty("openhostmode")] public string Openhostmode { get; set; } /// <summary> /// 主持人登錄模式,"0"表示網頁登錄;"1"表示客戶端登錄 可選,默認爲0 /// </summary> [JsonProperty("hostloginmode")] public string Hostloginmode { get; set; } /// <summary> /// 插播暖場視頻,填寫同一賬號下雲點播視頻vid 可選,默認關閉;參數值爲空,表示關閉 /// </summary> [JsonProperty("warmvideoid")] public string Warmvideoid { get; set; } /// <summary> /// 直播開始時間;格式:yyyy-MM-dd HH:mm:ss 可選,默認爲空 /// </summary> [JsonProperty("livestarttime")] public string Livestarttime { get; set; } /// <summary> /// 播放器提示語。未直播時播放器將顯示該提示語 可選,最多15個字符 /// </summary> [JsonProperty("playerbackgroundhint")] public string Playerbackgroundhint { get; set; } /// <summary> /// 手動錄製模式。0:關閉;1:開啓 可選,默認關閉 /// </summary> [JsonProperty("manuallyrecordmode")] public string Manuallyrecordmode { get; set; } /// <summary> /// 講師文檔權限。0:關閉;1:開啓 可選,默認關閉; /// </summary> [JsonProperty("clientdocpermissions")] public string Clientdocpermissions { get; set; } /// <summary> /// 重複登錄設置;0:允許後進入者登錄;1:禁止後進入者登錄,對講師端和觀看端生效 可選,默認0 /// </summary> [JsonProperty("repeatedloginsetting")] public string Repeatedloginsetting { get; set; } /// <summary> /// 直播間併發人數上限 可選,默認爲0,表示不做限制 /// </summary> [JsonProperty("maxaudiencenum")] public string Maxaudiencenum { get; set; } /// <summary> /// 文檔顯示模式。1:適合窗口;2:適合寬度 可選,適合窗口 /// </summary> [JsonProperty("documentdisplaymode")] public string Documentdisplaymode { get; set; } /// <summary> /// 倒計時功能。0:關閉;1:開啓 可選,默認關閉 /// </summary> [JsonProperty("openlivecountdown")] public string Openlivecountdown { get; set; } /// <summary> /// 講師端顯示在線人數。0:不顯示;1:顯示 可選,默認顯示 /// </summary> [JsonProperty("showlectueronlinenum")] public string Showlectueronlinenum { get; set; } /// <summary> /// 助教主持人端顯示在線人數。0:不顯示;1:顯示 可選,默認顯示 /// </summary> [JsonProperty("showassistonlinenum")] public string Showassistonlinenum { get; set; } /// <summary> /// 跑馬燈功能。0:關閉;1:開啓 可選,默認爲0 /// </summary> [JsonProperty("openmarquee")] public string Openmarquee { get; set; } /// <summary> /// 直播提醒設置,格式如下:[{"time":"","desc":""},{"time":"","desc":""},{"time":"","desc":""}] time爲提醒時間點(單位:分鐘),類型爲字符串,取值範圍1-1000的整數;desc爲提醒內容,類型爲字符串,最多20個字符 可選,默認爲空 /// </summary> [JsonProperty("alarms")] public string Alarms { get; set; }
我們將代碼複製到項目裏即可
效果如下
程序員就要提(xue)高(hui)效(tou)率(lan)嘛
哈哈哈 搞定收工
專心寫業務邏輯就行了