所有产品都离不开数据交互,封装为了让客户端和服务器端更好的识别数据,提高开发效率,减少出错:
javascript 对json数据有先天处理优势,关键要做的是服务器要生成能让javascript识别的json数据格式
public
class Json
{
private string[] name = new string[]{ " javascript ", " json "};
private object[] value = new object[]{ "", ""};
JsonObject jo = new JsonObject();
public Json( string js, string json)
{
if (js != "")
value[ 0] = js;
if (json != "")
value[ 1] = json;
jo = new JsonObject(name, value);
}
public string JavascriptPart()
{
return JsonConvert.ExportToString(jo[ " javascript "]);
}
public string JsonPart()
{
return JsonConvert.ExportToString(jo[ " json "]);
}
public string JsonAll()
{
return JsonConvert.ExportToString(jo);
}
public string MsgJson( string title, string msg)
{
value[ 0] = UIHelper.Message(title, msg);
return JsonConvert.ExportToString(jo);
}
/// <summary>
/// Json数据转为Hashtable
/// </summary>
/// <param name="json"> 合法josn数据 </param>
/// <returns> Hashtable </returns>
public static Hashtable FromJson( string json)
{
JsonObject jo = (JsonObject)JsonConvert.Import(json);
Hashtable ht = new Hashtable();
ht = JsonObjectToHashtable(jo, ht);
return ht;
}
/// <summary>
/// Json数据转为Hashtable
/// </summary>
/// <param name="jo"> Json对象 </param>
/// <param name="ht"> 父级Hashtable </param>
/// <returns></returns>
private static Hashtable JsonObjectToHashtable(JsonObject jo, Hashtable ht)
{
JsonArray names = jo.GetNamesArray();
for ( int i = 0; i < names.Count; i++)
{
object o = jo[names[i].ToString()];
if (o.GetType().Name == " JsonArray ")
{
Hashtable _ht = new Hashtable();
JsonArray ja = (JsonArray)o;
for ( int j = 0; j < ja.Count; j++)
{
_ht = JsonObjectToHashtable(ja[j] as JsonObject, _ht);
}
ht.Add(names[i].ToString(), _ht);
}
else ht.Add(names[i].ToString(), o);
}
return ht;
}
/// <summary>
/// 对象生成json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="data"></param>
/// <returns></returns>
public static string Serialize<T>(T data)
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, data);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
/// <summary>
/// Json反序列化为对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static T Deserialize<T>( string json)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
return (T)serializer.ReadObject(ms);
}
}
}
{
private string[] name = new string[]{ " javascript ", " json "};
private object[] value = new object[]{ "", ""};
JsonObject jo = new JsonObject();
public Json( string js, string json)
{
if (js != "")
value[ 0] = js;
if (json != "")
value[ 1] = json;
jo = new JsonObject(name, value);
}
public string JavascriptPart()
{
return JsonConvert.ExportToString(jo[ " javascript "]);
}
public string JsonPart()
{
return JsonConvert.ExportToString(jo[ " json "]);
}
public string JsonAll()
{
return JsonConvert.ExportToString(jo);
}
public string MsgJson( string title, string msg)
{
value[ 0] = UIHelper.Message(title, msg);
return JsonConvert.ExportToString(jo);
}
/// <summary>
/// Json数据转为Hashtable
/// </summary>
/// <param name="json"> 合法josn数据 </param>
/// <returns> Hashtable </returns>
public static Hashtable FromJson( string json)
{
JsonObject jo = (JsonObject)JsonConvert.Import(json);
Hashtable ht = new Hashtable();
ht = JsonObjectToHashtable(jo, ht);
return ht;
}
/// <summary>
/// Json数据转为Hashtable
/// </summary>
/// <param name="jo"> Json对象 </param>
/// <param name="ht"> 父级Hashtable </param>
/// <returns></returns>
private static Hashtable JsonObjectToHashtable(JsonObject jo, Hashtable ht)
{
JsonArray names = jo.GetNamesArray();
for ( int i = 0; i < names.Count; i++)
{
object o = jo[names[i].ToString()];
if (o.GetType().Name == " JsonArray ")
{
Hashtable _ht = new Hashtable();
JsonArray ja = (JsonArray)o;
for ( int j = 0; j < ja.Count; j++)
{
_ht = JsonObjectToHashtable(ja[j] as JsonObject, _ht);
}
ht.Add(names[i].ToString(), _ht);
}
else ht.Add(names[i].ToString(), o);
}
return ht;
}
/// <summary>
/// 对象生成json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="data"></param>
/// <returns></returns>
public static string Serialize<T>(T data)
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, data);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
/// <summary>
/// Json反序列化为对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static T Deserialize<T>( string json)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
return (T)serializer.ReadObject(ms);
}
}
}