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);
}
}
}