【開發心得】一維數組轉換json失敗了怎麼辦?

要解決的問題

最近項目裏新增一個功能,需要在發送短信到平臺之前做一個預覽。考慮到此項目是一套老的框架寫成的,爲了能夠與之前的代碼融合,首先還是考慮用一個數組,把數據保存到數組,然後將數組進行json格式化以後返回到前臺,用jquery進行解析並顯示。
首先把前臺解析代碼貼圖一下:
前臺解析代碼

一維數組方案

按照上述思路,由於之前框架裏,涉及到向前臺傳遞結果,都是通過如下形式:

List<×××Model> list = Get×××List(optionDictionary);

所以一開始也考慮聲明數組,爲了測試簡單起見,一開始只聲明瞭一個一維數組,代碼很簡單:

string[] smsSendPreview = new string[count]

接着就是循環進行數組賦值,也很簡單:

smsSendPreview[row] = "Content:"+context;

後臺測試下來也沒有問題,但是返回到前臺出現了問題,如下圖:
格式化json
上面的json在現有的框架中,根本無法解析,前臺只讀到了那個total的值,在頁面上顯示了32個空行!

字符串拼裝方案

走不通,只能另外想辦法,經過搜索,發現用數組的方案的確有硬傷—無法做到鍵值的對應,如果採用hashmap的方式,又不能做循環處理。
最後,突然想起來,既然json是格式化的字符串,爲什麼不能直接拼出一個json字符串?
想到就開始搜索,中間的測試過程就不多數了,直接上代碼,很簡單:

//首先聲明這個字符串的頭
string jsonStr = "[";
//下面這句就是要在循環裏面的,注意\的用法
jsonStr += "{\"RowCount\":\"" + row + "\",\"Mobile\":\"" + mobile + "\",\"Content\":\"" + context + "\",\"Remark\":\""+"待發送"+"\"},";
//下面這句也很關鍵,否則是無法在前臺解析的
jsonStr = jsonStr.Substring(0, jsonStr.Length - 1);
//最後不要忘記這句
jsonStr += "]";

至此,功能實現,當然還有分頁的問題,不過不是本文的重點,就不在此贅述了。

總結

還是那句話,不放棄,多動腦筋,纔有出路。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章