• 手机开发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() + "\"}";
                }
            }
        }
  • 相关阅读:
    [HAOI2011] 向量
    [HNOI2004] 树的计数
    [TJOI2009] 猜数字
    Wannafly Camp 2020 Day 6K 最大权值排列
    [HAOI2012] 容易题
    [ZJOI2008] 生日聚会
    [CQOI2007] 余数求和
    [CQOI2009] 中位数
    [SDOI2012] Longge的问题
    我的Apache又挂了之apache错误:server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName'
  • 原文地址:https://www.cnblogs.com/lhws/p/2659079.html
Copyright © 2020-2023  润新知