先贴代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Reflection;
namespace CodeCenterCore.Refelect
{
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public class ToJSONAtrribute : Attribute
{
public ToJSONAtrribute()
{
}
}
public static class ExensionJSON
{
public static string ToJSONList<T>(this IEnumerable<T> source)
{
string returnValue = "";
StringBuilder sb = new StringBuilder();
sb.Append("[");
foreach (T item in source)
{
sb.Append(item.ToJSON() + ",");
}
sb.Append("]");
returnValue = sb.ToString();
returnValue = Regex.Replace(returnValue, @",]", "]");
return returnValue;
}
public static string ToJSON<T>(this T source)
{
string returnValue = "";
StringBuilder sb = new StringBuilder();
sb.Append("{");
Type typeInfo = source.GetType();
PropertyInfo[] properties = typeInfo.GetProperties();
foreach (PropertyInfo property in properties)
{
object[] attrs = property.GetCustomAttributes(typeof(ToJSONAtrribute), false);
if (attrs.Length > 0)
sb.Append(string.Format("\"{0}\":\"{1}\",", property.Name, property.GetValue(source, null)));
}
sb.Append("}");
returnValue = sb.ToString();
returnValue = Regex.Replace(returnValue, @",}", "}");
return returnValue;
}
}
}