/* * by zhangguozhan 2015/1/5 * P2B.Common.CJson.ConvertJson.ObjectToJson方法无法序列号只读属性。下面的实现填补了这个不足 *//// /// 将对象转换成JSON字符串/// ////// /// public static string ObjectToJson (T obj) where T : class{ if (obj == null) return "object null"; string json = string.Empty; var properties = obj.GetType().GetProperties(); if (properties == null || !properties.Any()) return json; foreach (var property in properties) { if (!property.CanRead) continue; if (property.MemberType != System.Reflection.MemberTypes.Property) continue; string pName = property.Name; var pValue = property.GetValue(obj, null); if (/*property.PropertyType*/pValue is System.ValueType || pValue is string) { json += string.Format(",\"{0}\":\"{1}\"", pName, pValue == null ? "null" : pValue); } else { string subValue = string.Empty; if (pValue is System.Collections.IList) { var list = (pValue as System.Collections.IList); if (list.Count > 0) { string subJsons = string.Empty; foreach (var item in list) { subJsons += "," + ObjectToJson(item); } if (!string.Empty.Equals(subJsons)) subValue = subJsons.Substring(1); } } else { subValue = ObjectToJson(pValue); } if (!string.Empty.Equals(subValue)) { json += string.Format(",\"{0}\":[{1}]", pName, subValue); } } } if (json.Length > 0) json = "{ " + json.Substring(1) + "}"; return json;}