手机开发json数据传参

     最近做手机开发,后台vs2010,access=>json<=前端Android,ios

     网上的例子真的很少,苦逼了一周,本地浏览器是可以看到结果,但是Android和ios的屌丝们都耐不住了,MB的,解析不了啊,这是个肿么情况。哎~~~

     天天傻瓜式的上网查资料,打开百度,输入"net如何将json以包的形式传递给前端。",java的倒是有几个,.net的例子一个都没有,真想ctmd。本来想找外部资源问问,倒是给了个例子,md什么都冒得,就一个Newtonsoft.dll,感觉自己被鄙视了。冷静后,发誓一定将json传参搞定....

    废话不多说,直接上代码。

    新添加一个ashx的页面取名为“GetJson”

     json类

public  class GetJson : IHttpHandler
{
         public  void ProcessRequest(HttpContext context)
        {
            context.Response.Cache.SetNoStore();
            context.Response.Clear();
            context.Response.ContentType =  " application/json ";
            context.Response.Charset =  " utf-8 ";
             string action = context.Request[ " action "].ToString();
             string param = context.Request[ " params "].ToString().Replace( @" "" """).Replace( " { """).Replace( " } """);
            context.Response.Write(Write(action, param));
        }

         public  string ReturnJson()
        {
            DataTable dt =  new BLL.category().GetList( "");
             // return ToJson(dt);
             return CreateJsonParameters(dt);
        }

         ///   <summary>
        
///  将一个数据表转换成一个JSON字符串,在客户端可以直接转换成二维数组。
        
///   </summary>
        
///   <param name="source"> 需要转换的表。 </param>
        
///   <returns></returns>
         public  static  string DataTableToJson(DataTable source)
        {
             if (source.Rows.Count ==  0)
                 return  "";
            StringBuilder sb =  new StringBuilder( " [ ");
             foreach (DataRow row  in source.Rows)
            {
                sb.Append( " [ ");
                 for ( int i =  0; i < source.Columns.Count; i++)
                {
                    sb.Append( ' " ' + row[i].ToString() +  " \", ");
                }
                sb.Remove(sb.Length -  11);
                sb.Append( " ], ");
            }
            sb.Remove(sb.Length -  11);
            sb.Append( " ] ");
             return sb.ToString();
        }


         ///   <summary>
        
///  反回JSON数据到前台
        
///   </summary>
        
///   <param name="dt"> 数据表 </param>
        
///   <returns> JSON字符串 </returns>
         public  string CreateJsonParameters(DataTable dt)
        {
            StringBuilder JsonString =  new StringBuilder();
             // Exception Handling        
             if (dt !=  null && dt.Rows.Count >  0)
            {
                JsonString.Append( " { ");
                JsonString.Append( " \"TableInfo\":[  ");
                 for ( int i =  0; i < dt.Rows.Count; i++)
                {
                    JsonString.Append( " ");
                     for ( int j =  0; j < dt.Columns.Count; j++)
                    {
                         if (j < dt.Columns.Count -  1)
                        {
                            JsonString.Append( " \" " + dt.Columns[j].ColumnName.ToString() +  " \": " +  " \" " + dt.Rows[i][j].ToString() +  " \", ");
                        }
                         else  if (j == dt.Columns.Count -  1)
                        {
                            JsonString.Append( " \" " + dt.Columns[j].ColumnName.ToString() +  " \": " +  " \" " + dt.Rows[i][j].ToString() +  " \" ");
                        }
                    }
                     /**/
                     /* end Of String */
                     if (i == dt.Rows.Count -  1)
                    {
                        JsonString.Append( " ");
                    }
                     else
                    {
                        JsonString.Append( " },  ");
                    }
                }
                JsonString.Append( " ]} ");
                 return JsonString.ToString();
            }
             else
            {
                 return  null;
            }
        }

         public  static  string ToJsons(DataTable dt)
        {
            Dictionary< stringobject> dic =  new Dictionary< stringobject>();

             int index =  0;
             foreach (DataRow dr  in dt.Rows)
            {
                Dictionary< stringobject> result =  new Dictionary< stringobject>();

                 foreach (DataColumn dc  in dt.Columns)
                {
                    result.Add(dc.ColumnName, dr[dc].ToString());
                }
                dic.Add(index.ToString(), result);
                index++;
            }
             return ToJson(dic);
        }

         public  static  string ToJson( object obj)
        {
             /// / 首先,当然是JSON序列化
             // DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());

             /// / 定义一个stream用来存发序列化之后的内容
             // Stream stream = new MemoryStream();
            
// serializer.WriteObject(stream, obj);

             /// / 从头到尾将stream读取成一个字符串形式的数据,并且返回
             // stream.Position = 0;
            
// StreamReader streamReader = new StreamReader(stream);
            
// return streamReader.ReadToEnd();

            DataContractJsonSerializer serializer =  new DataContractJsonSerializer(obj.GetType());
             using (MemoryStream ms =  new MemoryStream())
            {
                serializer.WriteObject(ms, obj);
                StringBuilder sb =  new StringBuilder();
                sb.Append(Encoding.UTF8.GetString(ms.ToArray()));
                 return sb.ToString();
            }
        }

         // http://localhost :27784/admin/GetJson.aspx?uuid=3C075461B9B0&platformCode=IPHONE&platformVersion=5.1&appVersion=1.0&action=200&sign=464532A3157ED106931C569442F1A0B7&params={channel_id:1,parent_id:0} 
        
// 获取栏目
         public  string GetLanMu( string action,  string param)
        {
            BLL.category bllCagetory =  new BLL.category();
             string str =  string.Empty;
             string[] s = param.Split( ' , ');
             switch (action)
            {
                 case  " 200 ": // 栏目
                     string channel_id = s[ 0].Split( ' : ')[ 1];
                     string parent_id = s[ 1].Split( ' : ')[ 1];
                    DataTable dt = bllCagetory.GetList( "  channel_id= " + channel_id +  "  and parent_id= " + parent_id);
                     string[] strColumnName = {  " id "" title "" img_url " };
                    str = GetjsonByDT(dt, strColumnName, parent_id, action);
                     break;
                 case  " 201 ": // 运动项目
                     string parent_id1 = s[ 0].Split( ' : ')[ 1];
                    DataTable dt1 = bllCagetory.GetList( "  parent_id= " + parent_id1);
                     string[] strColumnName1 = {  " id "" title "" img_url " };
                    str = GetjsonByDT(dt1, strColumnName1, parent_id1, action);
                     break;
                 case  " 202 ": // 动作分解
                     string parent_id2 = s[ 0].Split( ' : ')[ 1];
                    DataTable dt2 = bllCagetory.GetList( "  parent_id= " + parent_id2);
                     string[] strColumnName2 = {  " id "" title "" img_url " };
                    str = GetjsonByDT(dt2, strColumnName2, parent_id2, action);
                     break;
                 default:
                     break;
            }

             return str;
        }

         public  string GetActionName( string action)
        {
             string s =  string.Empty;
             switch (action)
            {
                 case  " 200 ":
                    s =  " menu "break;
                 case  " 201 ":
                    s =  " menu_sport "break;
                 case  " 202 ":
                    s =  " action "break;
                 case  " 203 ":
                    s =  " action_info "break;
                 default:
                     break;
            }
             return s;
        }

         public  string GetjsonByDT(DataTable dt,  string[] strcolumnName,  string id,  string action)
        {
            StringBuilder JsonString =  new StringBuilder();
             // Exception Handling        
             if (dt !=  null && dt.Rows.Count >  0)
            {
                JsonString.Append( " { ");
                JsonString.Append( " \"parent_id\": " + id +  " , ");

                 string title =  "";
                 if ( new BLL.category().GetModel( int.Parse(id)) !=  null)
                {
                    title =  " \" " +  new BLL.category().GetModel( int.Parse(id)).title +  " \" ";
                }
                 else
                {
                    title =  " \"\" ";
                }

                JsonString.Append( " \"title\": " + title +  "" +  " , ");
                JsonString.Append( " \" " + GetActionName(action) +  " \":[ ");
                 if (dt.Rows.Count >  0)
                {
                     for ( int i =  0; i < dt.Rows.Count; i++)
                    {
                         string categoroyid = dt.Rows[i][ " id "].ToString();
                        DataTable dtphoto =  new BLL.photo().GetList( 100"  category_id= " + categoroyid,  "  id asc ").Tables[ 0];

                        JsonString.Append( " { ");
                         string str =  string.Empty;
                         foreach ( string s  in strcolumnName)
                        {
                             if (s ==  " img_url ")
                            {
                                 if (dtphoto.Rows.Count >  0)
                                {
                                    str +=  " \"action_info\":[ ";
                                     foreach (DataRow dr  in dtphoto.Rows)
                                    {
                                         string simage =  string.Empty;
                                        DataTable dtphoto_album =  new BLL.photo_album().GetList( "  photo_id= " + dr[ " id "].ToString()).Tables[ 0];
                                         if (dtphoto_album.Rows.Count >  0)
                                        {
                                             foreach (DataRow dr1  in dtphoto_album.Rows)
                                            {
                                                simage +=  " {\" ";
                                                simage += s +  " \": " +  " \"http://liuhuawenmile.vicp.cc " + dr1[ " small_img "] +  " \" ";
                                                simage +=  " }, ";
                                            }
                                            simage = simage.Substring( 0, simage.Length -  1);
                                        }

                                         if (simage.Length ==  0)
                                        {
                                            simage =  " {\"image_url\":\"-1\"} ";
                                        }

                                        str +=  " {\"id\": " +  " \" " + dr[ " id "].ToString() +  " \", ";
                                        str +=  " \"title\": " +  " \" " + dr[ " title "].ToString() +  " \", ";
                                        str +=  " \"image\":[ " + simage +  " ]}, ";
                                    }
                                    str = str.Substring( 0, str.Length -  1);
                                    str +=  " ";
                                }
                            }
                             else
                            {
                                str +=  " \" " + s +  " \": " +  " \" " + dt.Rows[i][s].ToString() +  " \", ";
                            }
                        }

                        JsonString.Append(str.Substring( 0, str.Length -  1));
                         /**/
                         /* end Of String */
                         if (i == dt.Rows.Count -  1)
                        {
                            JsonString.Append( " } ");
                        }
                         else
                        {
                            JsonString.Append( " }, ");
                        }
                    }

                    JsonString.Append( " ]} ");
                }
            }
             return JsonString.ToString();
        }

         public  string Write( string action,  string param)
        {
             try
            {
                 return  " {\"Code\":\"1\", " +  " \"Message\":\" " +  " 成功 " + " \",\"Result\": " + ToJson(GetLanMu(action, param)) +  " ,\"OperationTime\": " +  " \" " + DateTime.Now.ToString() +  " \"} ";
            }
             catch (Exception ex)
            {
                return  " {\"Code\":\"-1\", " +  " \"Message\":\" " + ex.ToString() +  " \", " +  " \"Result\":\"null\",\"OperationTime\": " +  " \" " + DateTime.Now.ToString() +  " \"} ";
            }
        }
    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值