首先我们做一个生成json的类
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Web.Script.Serialization;
namespace LineExamBLL
{
public class JSONHelp
{
//是否成功
private bool success;
//错误提示信息
private string error;
//总记
private int totalCount;
//数据
private string singleInfo;
private ArrayList arrData;
#region 初始化JSONHelp的所有对象
public JSONHelp()
{
error = string.Empty;
singleInfo = string.Empty;
totalCount = 0;
success = false;
arrData = new ArrayList();
}
#endregion
#region 重置JSONHelp的所有对象
public void ResetJSONHelp()
{
error = string.Empty;
singleInfo = string.Empty;
totalCount = 0;
success = false;
arrData.Clear();
}
#endregion
#region 对象与对象之间分割符
public void addItemOk()
{
arrData.Add("<br>");
}
#endregion
#region 在数组里添加key,value
public void addItem(string name,string value)
{
//json对象中如果有换行就会解析错误,所以我用<br/>先代替着
//以后赋值的时候<br/> 再用\n代替 :)有点傻
value = value.Replace("\n", "<br/>");
arrData.Add("" + name + ":" + "\'" + value + "\'");
}
#endregion
#region 返回组装好的json字符串
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("{");
sb.Append("totalCount:\'" + this.totalCountS + "\',");
sb.Append("error:\'" + this.errorS + "\',");
sb.Append("success:\'" + this.successS + "\',");
sb.Append("data:[");
int index = 0;
sb.Append("{");
if (arrData.Count <= 0)
{
sb.Append("}]");
}
else
{
foreach (string val in arrData)
{
index++;
if (val != "<br>")
{
sb.Append(val + ",");
}
else
{
sb = sb.Replace(",", "", sb.Length - 1, 1);
sb.Append("},");
if (index < arrData.Count)
{
sb.Append("{");
}
}
}
sb = sb.Replace(",", "", sb.Length - 1, 1);
sb.Append("]");
}
sb.Append("}");
return sb.ToString();
}
#endregion
public string errorS
{
get
{
return this.error;
}
set
{
this.error = value;
}
}
public bool successS
{
get
{
return this.success;
}
set
{
this.success = value;
}
}
public int totalCountS
{
get
{
return this.totalCount;
}
set
{
this.totalCount = value;
}
}
}
}
在服务器端C#生成json对象
JSONHelp jsonhelp = new JSONHelp();
jsonhelp.successS = true;
jsonhelp.addItem("titleID", "1");
jsonhelp.addItem("uAnswer", "A,B,C");
jsonhelp.addItemOk();
jsonhelp.addItem("titleID", "2");
jsonhelp.addItem("uAnswer", "B,C");
jsonhelp.addItemOk();
jsonhelp.addItem("titleID", "3");
jsonhelp.addItem("uAnswer", "C");
jsonhelp.addItemOk();
jsonTest = jsonhelp.ToString();
客户端获得jsonTest 这个字符串然后用evel方法生成json对象
<input type="hidden" id="jsdate" value="<%=jsonTest %>" /> 为了接受到服务器端的字符串用一个隐藏变量
$().ready(function() {
$("#btntest").click(function() {
var datastr = $("#jsdate").val();
alert(datastr);
var dataObj = eval("(" + datastr + ")"); //转换为json对象
alert(dataObj.data.length);//获得data的长度
$.each(dataObj.data, function(idx, item) {
alert("titleID:" + item.titleID + "uAnswer:" + item.uAnswer);
});
})
})
jquery中的replace方法只能替换第一个。所以要替换掉所有的<br/>要做个循环
var answer = answer.replace("<br/>", "\n")
while (answer.indexOf("<br/>") >= 0) {
var answer = answer.replace("<br/>", "\n")
}