要解決的問題
最近項目裏新增一個功能,需要在發送短信到平臺之前做一個預覽。考慮到此項目是一套老的框架寫成的,爲了能夠與之前的代碼融合,首先還是考慮用一個數組,把數據保存到數組,然後將數組進行json格式化以後返回到前臺,用jquery進行解析並顯示。
首先把前臺解析代碼貼圖一下:
一維數組方案
按照上述思路,由於之前框架裏,涉及到向前臺傳遞結果,都是通過如下形式:
List<×××Model> list = Get×××List(optionDictionary);
所以一開始也考慮聲明數組,爲了測試簡單起見,一開始只聲明瞭一個一維數組,代碼很簡單:
string[] smsSendPreview = new string[count]
接着就是循環進行數組賦值,也很簡單:
smsSendPreview[row] = "Content:"+context;
後臺測試下來也沒有問題,但是返回到前臺出現了問題,如下圖:
上面的json在現有的框架中,根本無法解析,前臺只讀到了那個total的值,在頁面上顯示了32個空行!
字符串拼裝方案
走不通,只能另外想辦法,經過搜索,發現用數組的方案的確有硬傷—無法做到鍵值的對應,如果採用hashmap的方式,又不能做循環處理。
最後,突然想起來,既然json是格式化的字符串,爲什麼不能直接拼出一個json字符串?
想到就開始搜索,中間的測試過程就不多數了,直接上代碼,很簡單:
//首先聲明這個字符串的頭
string jsonStr = "[";
//下面這句就是要在循環裏面的,注意\的用法
jsonStr += "{\"RowCount\":\"" + row + "\",\"Mobile\":\"" + mobile + "\",\"Content\":\"" + context + "\",\"Remark\":\""+"待發送"+"\"},";
//下面這句也很關鍵,否則是無法在前臺解析的
jsonStr = jsonStr.Substring(0, jsonStr.Length - 1);
//最後不要忘記這句
jsonStr += "]";
至此,功能實現,當然還有分頁的問題,不過不是本文的重點,就不在此贅述了。
總結
還是那句話,不放棄,多動腦筋,纔有出路。