要解决的问题
最近项目里新增一个功能,需要在发送短信到平台之前做一个预览。考虑到此项目是一套老的框架写成的,为了能够与之前的代码融合,首先还是考虑用一个数组,把数据保存到数组,然后将数组进行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 += "]";
至此,功能实现,当然还有分页的问题,不过不是本文的重点,就不在此赘述了。
总结
还是那句话,不放弃,多动脑筋,才有出路。