【开发心得】一维数组转换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 += "]";

至此,功能实现,当然还有分页的问题,不过不是本文的重点,就不在此赘述了。

总结

还是那句话,不放弃,多动脑筋,才有出路。

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