全局引用
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
//此处引用的dll为最新版json60r1,所以调用的类和.netFramework2.0版本的有所不同
//此处引用Jayrock.dll
首先创建一个对象如下:
#region Json对象转换成DataTable
public DataTable getDtFromJson(string json)
{
#region Json 字符串 转换为 DataTable数据集合
/// <summary>
/// Json 字符串 转换为 DataTable数据集合
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
DataTable dataTable = new DataTable();
//try
//{
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
if (arrayList.Count > 0)
{
foreach (Dictionary<string, object> dictionary in arrayList)
{
if (dictionary.Keys.Count<string>() == 0)
{
//return;
continue;
}
if (dataTable.Columns.Count == 0)
{
foreach (string current in dictionary.Keys)
{
dataTable.Columns.Add(current, dictionary[current].GetType());
}
}
DataRow dataRow = dataTable.NewRow();
foreach (string current in dictionary.Keys)
{
dataRow[current] = dictionary[current];
}
dataTable.Rows.Add(dataRow); //循环添加行到DataTable中
}
}
#endregion
return dataTable;
}
#endregion
#region Newtonsoft.Json名称空间下的方法将DataTable序列化为json对象
string sql = "SELECT * FROM twodictionery t";
DataTable dt = new DataAccess.SqlRunner().ExecuteSQLFillTable(sql);
string json = JsonConvert.SerializeObject(dt);
#endregion
#region Newtonsoft.Json名称空间下的方法将json反序列化为DataTable对象
DataTable dt1 = JsonConvert.DeserializeObject<DataTable>(this.hidjson.Value);
#endregion
#region Jayrock.Json转换json为model对象
IList<UserInfo> item = new List<UserInfo>();
JsonArray array = Jayrock.Json.Conversion.JsonConvert.Import(this.hidjson.Value) as JsonArray;
UserInfo usr = null;
foreach (JsonObject temp in array)
{
string GoodsNo = temp["GoodsNo"] + string.Empty;
string GoodsName = temp["GoodsName"] + string.Empty;
usr = new UserInfo();
usr.Name = GoodsNo;
usr.PassWord = GoodsName;
usr.User = temp["Qty"] + string.Empty;
usr.Age = temp["LocationCode"] + string.Empty;
item.Add(usr);
}
#endregion
js转换Json对象为数组:
function JsonToArray(jsonArray) {
var json = eval(jsonArray);
var str = "";
for (var i = 0; i < json.length; i++) {
str += json[i]["GoodsNo"].toString() + json[i]["GoodsName"].toString() + json[i]["Qty"].toString() + json[i]["LocationCode"].toString() + "\r\n";
}
alert(str);
}