json字串轉換成泛型類

 

webrequst發送到指定的urlweb

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using System.Net;
using System.Text;
using System.IO;

/// <summary>
///simsimi 的摘要說明
/// </summary>
public class simsimi
{
    public simsimi()
    {
        //
        //TODO: 在此處添加構造函數邏輯
        //string pageHtml = SendDataByGET("htp://www.simsimi.com/func/req?msg=" + msg + "!&lc=ch");
        //
    }
    public string ReturnStr(string msg)
    {
        return ReturnStr(msg, "Re_txt");
    }
    public string ReturnStr(string msg,string act)
    {
        string pageHtml = SendDataByGET("http://124.172.174.141/Handler1.ashx?msg=" + msg + "&act=" + act);
        pageHtml = "[" + pageHtml + "]";
        WebPageBase wb = new WebPageBase(); wb.WriteTxt(pageHtml);
        List<SiriResult> _List = JsonConvert.DeserializeObject<List<SiriResult>>(pageHtml);
        string re = "";
        foreach (SiriResult c in _List)
        {
            re = c.Response;
        }
        return re;
    }
    #region 同步經過GET方式發送數據
    /// <summary>
    /// 經過GET方式發送數據
    /// </summary>
    /// <param name="Url">url</param>
    /// <param name="postDataStr">GET數據</param>
    /// <param name="cookie">GET容器</param>
    /// <returns></returns>
    public string SendDataByGET(string Url)
    {
        string host = "http://124.172.174.141";
        WebRequest webRequest = WebRequest.Create(Url);
        HttpWebRequest request = webRequest as HttpWebRequest;

       //設置cookie
        CookieContainer cc = new CookieContainer();
        cc.Add(new Uri(host), new Cookie("JSESSIONID", "FC50E1B413D61FF258ED76121D15DBC8"));
        cc.Add(new Uri(host), new Cookie("__utma", "119922954.1431887846.1365044080.1365044080.1365044080.1"));
        cc.Add(new Uri(host), new Cookie("__utmb", "119922954.3.9.1365044144105"));
        cc.Add(new Uri(host), new Cookie("__utmc", "119922954"));
        cc.Add(new Uri(host), new Cookie("__utmz", "119922954.1365044080.1.1.utmcsr=tieba.baidu.com|utmccn=(referral)|utmcmd=referral|utmcct=/p/2166507443"));
        cc.Add(new Uri(host), new Cookie("sagree", "true"));
        request.CookieContainer = cc;

        request.Method = "GET";
        request.ContentType = "application/json; charset=utf-8";
        request.UserAgent = "Mozilla/5.0 (Windows NT 6.2; rv:20.0) Gecko/20100101 Firefox/20.0";
        request.Referer = "    http://124.172.174.141/talk.htm";
        

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream myResponseStream = response.GetResponseStream();
        StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
        string retString = myStreamReader.ReadToEnd();
        myStreamReader.Close();
        myResponseStream.Close();

        return retString;
    }
    #endregion


    /// <summary>
    /// 直接調用此方法,主動下發數據,返回是否成功的字符串
    /// </summary>
    /// <param name="JSONData">json格式數據</param>
    /// <param name="Url">要推送的url</param>
    /// <returns></returns>
    public string GetResponseData(string JSONData,string Url)
    {
            byte[] bytes = Encoding.UTF8.GetBytes(JSONData);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);  
            request.Method = "POST";  
            request.ContentLength = bytes.Length;  
            request.ContentType = "text/xml";  
            Stream reqstream = request.GetRequestStream();  
            reqstream.Write(bytes, 0, bytes.Length);  
  
            //聲明一個HttpWebRequest請求  
            request.Timeout = 90000;  
            //設置鏈接超時時間  
            request.Headers.Set("Pragma", "no-cache");  
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
            Stream streamReceive = response.GetResponseStream();  
            Encoding encoding = Encoding.UTF8;  
  
            StreamReader streamReader = new StreamReader(streamReceive, encoding);  
            string  strResult = streamReader.ReadToEnd();  
            streamReceive.Dispose();  
            streamReader.Dispose();  
  
            return strResult;  
        }  
}
View Code

 

json字符串處理類json

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Newtonsoft.Json;
using System.Reflection;
using System.IO;
using Newtonsoft.Json.Linq;

/// <summary>
///JsonConvert 的摘要說明
/// </summary>
public class JsonToList<T>
{
    public JsonToList()
    {
        //
        //TODO: 在此處添加構造函數邏輯
        //
    }   

    public List<T> ToList(string jsonString)
    {
        List<T> list = new List<T>();
        List<string> li = JonsArr(jsonString);
        foreach (string s in li)
        {
            T t = (T)jsonToObject(s, typeof(T));
            list.Add(t);
        }
        return list;
    }

    /// <summary>
    /// 將{""name"":""zhang"",""age"":""19""},{""name"":""d打發"",""age"":""19""},{""name"":""阿凡達"",""age"":""19""}";格式
    /// 的字符串拆解,造成值對數組,加到list
    /// </summary>
    /// <param name="jsonString"></param>
    /// <returns></returns>
    public static List<string> JonsArr(string jsonString)
    {
        List<string> li = new List<string>();
        string s = jsonString.Replace(" ", "").Replace("},", "$");
        string[] strArr = s.Split('$');
        foreach (string str in strArr)
        {
            if (!string.IsNullOrEmpty(str))
            {
                string s1 = str.Replace("\"", "").Replace("}", "").Replace("{", "").Replace("\r","").Replace("\n","");
                li.Add(s1);
            }
        }
        return li;
    }
    /// <summary>
    /// 反射取得單個對象
    /// </summary>
    /// <param name="jsonstr"></param>
    /// <param name="objectType"></param>
    /// <returns></returns>
    public static object jsonToObject(string jsonstr, Type objectType)//傳遞兩個參數,一個是json字符串,一個是要建立的對象的類型
    {
        string[] jsons = jsonstr.Split(new char[] { ',' });//將json字符串分解成 「屬性:值」數組
        for (int i = 0; i < jsons.Length; i++)
        {
            jsons[i] = jsons[i].Replace("\"", "");
        }//去掉json字符串的雙引號
        object obj = System.Activator.CreateInstance(objectType); //使用反射動態建立對象
        //object obj = System.Activator.CreateInstance(typeof(stu)); //使用反射動態建立對象
        PropertyInfo[] pis = obj.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);//得到對象的全部public屬性

        if (pis != null)//若是得到了屬性
            foreach (PropertyInfo pi in pis)//針對每個屬性進行循環
            {
                for (int i = 0; i < jsons.Length; i++)//檢查json字符串中的全部「屬性:值」類表
                {
                    if (jsons[i].Split(new char[] { ':' })[0] == pi.Name)//若是對象的屬性名稱剛好和json中的屬性名相同
                    {
                        Type proertyType = pi.PropertyType; //得到對象屬性的類型
                        pi.SetValue(obj, Convert.ChangeType(jsons[i].Split(new char[] { ':' })[1], proertyType), null);
                        //將json字符串中的字符串類型的「值」轉換爲對象屬性的類型,並賦值給對象屬性
                    }
                }
            }
        return obj;
    }
}
View Code

調用方法api

 String jsonText = @"{""name"":""yy"",""age"":""19""},{""name"":""77"",""age"":""19""},{""name"":""阿凡達"",""age"":""19""}";       
        JsonToList<stu> jt = new JsonToList<stu>();
        List<stu> li = jt.ToList(jsonText);

主動發送微信內容範例數組

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Newtonsoft.Json;
using System.Reflection;
using System.IO;
using Newtonsoft.Json.Linq;


public partial class test : WebPageBase
{
    protected void Page_Load(object sender, EventArgs e)
    {
        simsimi ss = new simsimi();
        JSONData jso = new JSONData();
        jso.Access_Token = "_ocC5n0Y4hYeZkE69xdthP_B8ic42JttWc8L5BamccxJw5d2nAdd8jPBZbRrigERbKoUCLsXS47WT73UkxlRplF7GBZaN5LhFvicGZq9bODyy2bxqESbSlnyruHU-xosa0Gcm1rbjoCZI7XWz5004A";
        jso.ToUser = "ocsmquGIU2GK7oQWTiUtBpGub64k";

        string title = "主題騎車比賽aaaa";
        string desc = "一下是詳細介紹";
        string msg = "打球吧1146";
        string media_id = "i78Xd2EzMd-vCEOLOYY4ugtEmN94eZgAJrSUK2WADzgq5ZVER9zr1xtwXriJCZ_C";

        jso.JsonParaMedia = string.Format(@"{{""title"":""{0}"",""desc"":""{1}"""",""media_id"":""{2}"""",""msg"":""{3}""""""}}", title, desc, media_id, msg);

        string url = "http://test";
        string picurl = "http://imag";
        for (int i = 1; i < 10; i++)
        {
            jso.JsonParaNews += string.Format(@"{{""title"":""{0}"",""description"":""{1}"",""url"":""{2}"",""picurl"":""{3}""}},", title + i.ToString(), desc + i.ToString(), url + i.ToString(), picurl + i.ToString());
        }

        string s_bakc = ss.GetResponseData(jso.JsonDataString(JSONData.SendType.news), jso.Url);
        base.WriteTxt(s_bakc);
        Response.Write(s_bakc);

        //String jsonText = @"{""name"":""yy"",""age"":""19""},{""name"":""77"",""age"":""19""},{""name"":""阿凡達"",""age"":""19""}";       
        //JsonToList<stu> jt = new JsonToList<stu>();
        //List<stu> li = jt.ToList(jsonText);




        /*          推送文本        
        string JSONData = "{ \"touser\": \"ocsmquGIU2GK7oQWTiUtBpGub64k\",     \"msgtype\": \"text\",     \"text\": {        \"content\": \"33\"    }}";
        string Url = @"https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=7QqKQ5bynTsZ0u4crNuEs6pVVJca-ZiQOibppGDDkgG_ytjAefWXdVk4X619c5mrPepfuMcmjGAUTej5SLNQU4DVydPXVwb9ZWFtbhTHc5RjPTuOGTa2LwJulmJ2-V5eEaY0X57Ikg0_Kpa8IQob8A";
        string s_bakc = ss.GetResponseData(JSONData,Url);
        base.WriteTxt(s_bakc);*/

        /*          推送圖片        
        string JSONData = "{ \"touser\": \"ocsmquGIU2GK7oQWTiUtBpGub64k\",     \"msgtype\": \"image\",     \"image\": {      \"media_id\":\"xj8VZqQG14KcEHUsPa95zi1obtucOoU_OU6Tf5W1QkBLQIsof7XXxS8QHOgIl1tq\"   }}";
        string Url = @"https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=7QqKQ5bynTsZ0u4crNuEs6pVVJca-ZiQOibppGDDkgG_ytjAefWXdVk4X619c5mrPepfuMcmjGAUTej5SLNQU4DVydPXVwb9ZWFtbhTHc5RjPTuOGTa2LwJulmJ2-V5eEaY0X57Ikg0_Kpa8IQob8A";
        string s_bakc = ss.GetResponseData(JSONData, Url);
        base.WriteTxt(s_bakc);
        Response.Write(s_bakc);*/

        /*          推送菜單       */
        //string JSONData =  "{     \"button\":[     {              \"type\":\"click\",          \"name\":\"今日歌曲\",          \"key\":\"V1001_TODAY_MUSIC\"      },      {           \"type\":\"click\",           \"name\":\"歌手簡介\",           \"key\":\"V1001_TODAY_SINGER\"      },      {           \"name\":\"菜單\",           \"sub_button\":[           {                   \"type\":\"view\",               \"name\":\"搜索\",               \"url\":\"http://www.soso.com/\"            },            {               \"type\":\"view\",               \"name\":\"視頻\",               \"url\":\"http://v.qq.com/\"            },            {               \"type\":\"click\",               \"name\":\"贊一下咱們\",               \"key\":\"V1001_GOOD\"            }]       }] }";
        //string Url = @"https://api.weixin.qq.com/cgi-bin/menu/create?access_token=I8UUyLt5e8EUxZvcrcvEpf2kLOjCZ0x3ZAbzIueR80XvGIgDXWb4czhL2yzhsMyoh0ju7RVRUBjF1M16N-9XykbHiGgwa6s9-o8BhnwYCNfHcK2WGXkrUlZrOMHdpuOYcx5MiD7UNF0lTB1lZTJ1iA";
        //string s_bakc = ss.GetResponseData(JSONData, Url);
        //base.WriteTxt(s_bakc);
        //Response.Write(s_bakc);





    }
}
View Code

 

 

注意:只能值對 jsonText格式的json的字符串進行處理,再複雜點的,就須要改寫類中的方法了微信

使用時,請引用dll Newtonsoft.Json_2013_12_26_19_23.rarcookie

相關文章
相關標籤/搜索