今天做一個視訊介面對接,發現對方提供的文件沒有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().html();
var nameuper = name.charAt().toUpperCase() + name.slice();
var desc = td.eq().html() + " " + td.eq().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)嘛
哈哈哈 搞定收工
專心寫業務邏輯就行了