将对象转换为json字符串

 #region sta+ 对于字典数据生成json字符串
        /// <summary>
        /// 对于字典数据生成json字符串
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public static string GetJson(Dictionary<string, string> value)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("{");
            foreach (var item in value.Keys)
            {
                sb.Append("\"" + item + "\":\"" + value[item] + "\"");
                sb.Append(",");
            }
            sb.Remove(sb.Length - 1, 1).Append("}");
            return sb.ToString();
        }
        #endregion

        #region sta+ 集合生成json
        /// <summary>
        /// 集合生成json
        /// </summary>
        /// <returns></returns>
        public static string ListObjectToJson<T>(List<T> list)
        {
            StringBuilder sb = new StringBuilder();
            if (list == null) { return "[]"; }
            if (list.Count > 0)
            {
                Type type = list[1].GetType();
                if (list.Count == 1)
                {
                    sb.Append(ObjectToJson<T>(list[0]));
                }
                else
                {
                    sb.Append("[");
                    foreach (T item in list)
                    {
                        sb.Append(ObjectToJson<T>(item));
                        sb.Append(",");
                    }
                    sb.Remove(sb.Length - 1, 1).Append("]");
                }
            }
            else
            {
                sb.Append("[]");
            }
            return sb.ToString();

        }
        #endregion

        #region sta+ 生成对象的json格式
        /// <summary>
        /// 生成对象的json格式
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="tt"></param>
        /// <returns></returns>
        public static string ObjectToJson<T>(T tt)
        {
            StringBuilder sb = new StringBuilder();
            Type t = tt.GetType();
            PropertyInfo[] proterties = t.GetProperties(BindingFlags.Instance | BindingFlags.Public);
            if (proterties.Length <= 0)
            {
                return default(string);
            }
            sb.Append("{");
            foreach (var item in proterties) //属性值获取
            {
                string name = item.Name;
                var value = item.GetValue(tt, null);
                sb.Append("\"" + name + "\":");
                //是否是值类型或者是string类型
                if (item.PropertyType.IsValueType || item.PropertyType.Name.ToLowerInvariant().StartsWith("string"))
                {
                    if ((value is DateTime) && Convert.ToDateTime(value).Year == 1)
                    {
                        sb.Append("\"\"");
                    }
                    else
                    {
                        sb.Append("\"" + value + "\"");
                    }
                    sb.Append(",");
                }
                else
                {
                    //是泛型类(暂不能判断是集合类)未实现
                    if (item.PropertyType.IsClass && item.PropertyType.IsGenericType)
                    {
                        List<T> list = value as List<T>;
                        sb.Append(ListObjectToJson<T>(list));
                        // string typename = item.PropertyType.GetGenericArguments()[0].Name;
                        //ListType(value, typename,ref sb);
                    }//如果是数组
                    else if (item.PropertyType.IsClass && item.PropertyType.IsArray)
                    {
                        sb.Append("[");
                        foreach (var i in (value as Array))
                        {
                            sb.Append(i);
                            sb.Append(",");
                        }
                        sb.Remove(sb.Length - 1, 1).Append("]");
                    }
                    else
                    {
                        ObjectToJson(value);
                    }
                    sb.Append(",");
                }
            }
            sb.Remove(sb.Length - 1, 1).Append("}");
            return sb.ToString();
        }
        #endregion

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值