JSON格式化

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Reflection;
using System.Collections;
using System.Data.Common;
 
public  class  ConvertJson
{
     #region 私有方法
     /// <summary>
     /// 过滤特殊字符
     /// </summary>
     private  static  string String2Json(String s)
     {
         StringBuilder sb =  new  StringBuilder();
         for  ( int  i =  0 ; i < s.Length; i++)
         {
             char  c = s.ToCharArray()[i];
             switch  (c)
             {
                 case  '\"' :
                     sb.Append( "\\\"" );  break ;
                 case  '\\' :
                     sb.Append( "\\\\" );  break ;
                 case  '/' :
                     sb.Append( "\\/" );  break ;
                 case  '\b' :
                     sb.Append( "\\b" );  break ;
                 case  '\f' :
                     sb.Append( "\\f" );  break ;
                 case  '\n' :
                     sb.Append( "\\n" );  break ;
                 case  '\r' :
                     sb.Append( "\\r" );  break ;
                 case  '\t' :
                     sb.Append( "\\t" );  break ;
                 default :
                     sb.Append(c);  break ;
             }
         }
         return  sb.ToString();
     }
 
     /// <summary>
     /// 格式化字符型、日期型、布尔型
     /// </summary>
     private  static  string StringFormat(string str, Type type)
     {
         if  (type == typeof(string))
         {
             str = String2Json(str);
             str =  "\""  + str +  "\"" ;
         }
         else  if  (type == typeof(DateTime))
         {
             str =  "\""  + str +  "\"" ;
         }
         else  if  (type == typeof(bool))
         {
             str = str.ToLower();
         }
         else  if  (type != typeof(string) && string.IsNullOrEmpty(str))
         {
             str =  "\""  + str +  "\"" ;
         }
         return  str;
     }
     #endregion
 
     #region List转换成Json
     /// <summary>
     /// List转换成Json
     /// </summary>
     public  static  string ListToJson<T>(IList<T> list)
     {
         object obj = list[ 0 ];
         return  ListToJson<T>(list, obj.GetType().Name);
     }
 
     /// <summary>
     /// List转换成Json
     /// </summary>
     public  static  string ListToJson<T>(IList<T> list, string jsonName)
     {
         StringBuilder Json =  new  StringBuilder();
         if  (string.IsNullOrEmpty(jsonName)) jsonName = list[ 0 ].GetType().Name;
         Json.Append( "{\""  + jsonName +  "\":[" );
         if  (list.Count >  0 )
         {
             for  ( int  i =  0 ; i < list.Count; i++)
             {
                 T obj = Activator.CreateInstance<T>();
                 PropertyInfo[] pi = obj.GetType().GetProperties();
                 Json.Append( "{" );
                 for  ( int  j =  0 ; j < pi.Length; j++)
                 {
                     Type type = pi[j].GetValue(list[i],  null ).GetType();
                     Json.Append( "\""  + pi[j].Name.ToString() +  "\":"  + StringFormat(pi[j].GetValue(list[i], null ).ToString(), type));
 
                     if  (j < pi.Length -  1 )
                     {
                         Json.Append( "," );
                     }
                 }
                 Json.Append( "}" );
                 if  (i < list.Count -  1 )
                 {
                     Json.Append( "," );
                 }
             }
         }
         Json.Append( "]}" );
         return  Json.ToString();
     }
     #endregion
 
     #region 对象转换为Json
     /// <summary>
     /// 对象转换为Json
     /// </summary>
     /// <param name="jsonObject">对象</param>
     /// <returns>Json字符串</returns>
     public  static  string ToJson(object jsonObject)
     {
         string jsonString =  "{" ;
         PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();
         for  ( int  i =  0 ; i < propertyInfo.Length; i++)
         {
             object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject,  null );
             string value = string.Empty;
             if  (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan)
             {
                 value =  "'"  + objectValue.ToString() +  "'" ;
             }
             else  if  (objectValue is string)
             {
                 value =  "'"  + ToJson(objectValue.ToString()) +  "'" ;
             }
             else  if  (objectValue is IEnumerable)
             {
                 value = ToJson((IEnumerable)objectValue);
             }
             else
             {
                 value = ToJson(objectValue.ToString());
             }
             jsonString +=  "\""  + ToJson(propertyInfo[i].Name) +  "\":"  + value +  "," ;
         }
         jsonString.Remove(jsonString.Length -  1 , jsonString.Length);
         return  jsonString +  "}" ;
     }
     #endregion
 
     #region 对象集合转换Json
     /// <summary>
     /// 对象集合转换Json
     /// </summary>
     /// <param name="array">集合对象</param>
     /// <returns>Json字符串</returns>
     public  static  string ToJson(IEnumerable array)
     {
         string jsonString =  "[" ;
         foreach (object item in array)
         {
             jsonString += ToJson(item) +  "," ;
         }
         jsonString.Remove(jsonString.Length -  1 , jsonString.Length);
         return  jsonString +  "]" ;
     }
     #endregion
 
     #region 普通集合转换Json
     /// <summary>
     /// 普通集合转换Json
     /// </summary>
     /// <param name="array">集合对象</param>
     /// <returns>Json字符串</returns>
     public  static  string ToArrayString(IEnumerable array)
     {
         string jsonString =  "[" ;
         foreach (object item in array)
         {
             jsonString = ToJson(item.ToString()) +  "," ;
         }
         jsonString.Remove(jsonString.Length -  1 , jsonString.Length);
         return  jsonString +  "]" ;
     }
     #endregion
 
     #region  DataSet转换为Json
     /// <summary>
     /// DataSet转换为Json
     /// </summary>
     /// <param name="dataSet">DataSet对象</param>
     /// <returns>Json字符串</returns>
     public  static  string ToJson(DataSet dataSet)
     {
         string jsonString =  "{" ;
         foreach (DataTable table in dataSet.Tables)
         {
             jsonString +=  "\""  + table.TableName +  "\":"  + ToJson(table) +  "," ;
         }
         jsonString = jsonString.TrimEnd( ',' );
         return  jsonString +  "}" ;
     }
     #endregion
 
     #region Datatable转换为Json
     /// <summary>
     /// Datatable转换为Json
     /// </summary>
     /// <param name="table">Datatable对象</param>
     /// <returns>Json字符串</returns>
     public  static  string ToJson(DataTable dt)
     {
         StringBuilder jsonString =  new  StringBuilder();
         jsonString.Append( "[" );
         DataRowCollection drc = dt.Rows;
         for  ( int  i =  0 ; i < drc.Count; i++)
         {
             jsonString.Append( "{" );
             for  ( int  j =  0 ; j < dt.Columns.Count; j++)
             {
                 string strKey = dt.Columns[j].ColumnName;
                 string strValue = drc[i][j].ToString();
                 Type type = dt.Columns[j].DataType;
                 jsonString.Append( "\""  + strKey +  "\":" );
                 strValue = StringFormat(strValue, type);
                 if  (j < dt.Columns.Count -  1 )
                 {
                     jsonString.Append(strValue +  "," );
                 }
                 else
                 {
                     jsonString.Append(strValue);
                 }
             }
             jsonString.Append( "}," );
         }
         jsonString.Remove(jsonString.Length -  1 1 );
         jsonString.Append( "]" );
         return  jsonString.ToString();
     }
 
     /// <summary>
     /// DataTable转换为Json
     /// </summary>
     public  static  string ToJson(DataTable dt, string jsonName)
     {
         StringBuilder Json =  new  StringBuilder();
         if  (string.IsNullOrEmpty(jsonName)) jsonName = dt.TableName;
         Json.Append( "{\""  + jsonName +  "\":[" );
         if  (dt.Rows.Count >  0 )
         {
             for  ( int  i =  0 ; i < dt.Rows.Count; i++)
             {
                 Json.Append( "{" );
                 for  ( int  j =  0 ; j < dt.Columns.Count; j++)
                 {
                     Type type = dt.Rows[i][j].GetType();
                     Json.Append( "\""  + dt.Columns[j].ColumnName.ToString() +  "\":"  + StringFormat(dt.Rows[i][j].ToString(), type));
                     if  (j < dt.Columns.Count -  1 )
                     {
                         Json.Append( "," );
                     }
                 }
                 Json.Append( "}" );
                 if  (i < dt.Rows.Count -  1 )
                 {
                     Json.Append( "," );
                 }
             }
         }
         Json.Append( "]}" );
         return  Json.ToString();
     }
     #endregion
 
     #region DataReader转换为Json
     /// <summary>
     /// DataReader转换为Json
     /// </summary>
     /// <param name="dataReader">DataReader对象</param>
     /// <returns>Json字符串</returns>
     public  static  string ToJson(DbDataReader dataReader)
     {
         StringBuilder jsonString =  new  StringBuilder();
         jsonString.Append( "[" );
         while  (dataReader.Read())
         {
             jsonString.Append( "{" );
             for  ( int  i =  0 ; i < dataReader.FieldCount; i++)
             {
                 Type type = dataReader.GetFieldType(i);
                 string strKey = dataReader.GetName(i);
                 string strValue = dataReader[i].ToString();
                 jsonString.Append( "\""  + strKey +  "\":" );
                 strValue = StringFormat(strValue, type);
                 if  (i < dataReader.FieldCount -  1 )
                 {
                     jsonString.Append(strValue +  "," );
                 }
                 else
                 {
                     jsonString.Append(strValue);
                 }
             }
             jsonString.Append( "}," );
         }
         dataReader.Close();
         jsonString.Remove(jsonString.Length -  1 1 );
         jsonString.Append( "]" );
         return  jsonString.ToString();
     }
     #endregion

} 

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值