先在项目中引用JsonExSerializer.dll,如果没有,可以到我的资源中下载。
创建一个类,如下所示,然后通过 静态方法MonitorData.Parse(string)就可以得到一个类的实例,然后开始使用此实例了。注意字符串中的字段必须是类中有定义的属性,但是类中有定义属性不需要在字符串中存在。
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using JsonExSerializer;
namespace CommonClass
{
public class MonitorData
{
public MonitorData()
{
para = new Hashtable();
}
public string jvm_run_time { set; get; }
public string total_jvm_memory { set; get; }
public string jvm_free_memory { set; get; }
public string jvm_used_memory { set; get; }
public string active_execute_threads { set; get; }
public string execute_threads_total_count { set; get; }
public string execute_hread_idle_count { set; get; }
public string queue_length { set; get; }
public string pending_user_request_count { set; get; }
public string completed_request_count { set; get; }
public string hogging_thread_count { set; get; }
public string standby_thread_count { set; get; }
public string throughput { set; get; }
public string jdbc_datasourse_name { set; get; }
public string active_connections_average_count { set; get; }
public string active_connections_current_count { set; get; }
public string active_connections_high_count { set; get; }
public string online_user_num { set; get; }
public DateTime starttime { set; get; }
public DateTime endtime { set; get; }
public TimeSpan lasttime
{
get
{
return endtime - starttime;
}
}
public Hashtable para { set; get; }
public string GetStringParaValue(string key)
{
if (!para.Contains(key) || para[key] == null)
{
return string.Empty;
}
else
{
return para[key].ToString();
}
}
public long GetIntParaValue(string key)
{
if (!para.Contains(key) || !(para[key] is long))
{
return -1;
}
else
{
return (long)para[key];
}
}
public override string ToString()
{
Serializer s = new Serializer(typeof(MonitorData));
s.Context.OutputTypeComment = false;
s.Context.OutputTypeInformation = false;
return s.Serialize(this);
}
public static MonitorData Parse(string str)
{
Serializer s = new Serializer(typeof(MonitorData));
try
{
return s.Deserialize(str) as MonitorData;
}
catch (Exception ex)
{
return null;
}
}
}
}
使用时比如json字符串为
{"jvm_run_time":"12.37 ","total_jvm_memory":"2048.00 ","jvm_free_memory":"681.90 ","jvm_used_memory":"1366.10 ","active_execute_threads":"-1","execute_threads_total_count":"-1","execute_hread_idle_count":"-1","queue_length":"-1","pending_user_request_count":"-1","completed_request_count":"-1","hogging_thread_count":"-1","standby_thread_count":"-1","throughput":"-1","jdbc_datasourse_name":"-1","active_connections_average_count":"-1","active_connections_current_count":"-1","active_connections_high_count":"-1","online_user_num":"1168"}
MonitorData md = MonitorData.Parse(上面的字符串);即可