json字串转换成泛型类
webrequst发送到指定的url
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", ""));
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, , bytes.Length); //声明一个HttpWebRequest请求
request.Timeout = ;
//设置连接超时时间
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;
}
}
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 = ; 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 = ; i < jsons.Length; i++)//检查json字符串中的所有“属性:值”类表
{
if (jsons[i].Split(new char[] { ':' })[] == pi.Name)//如果对象的属性名称恰好和json中的属性名相同
{
Type proertyType = pi.PropertyType; //获得对象属性的类型
pi.SetValue(obj, Convert.ChangeType(jsons[i].Split(new char[] { ':' })[], proertyType), null);
//将json字符串中的字符串类型的“值”转换为对象属性的类型,并赋值给对象属性
}
}
}
return obj;
}
}
调用方法
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 = ; i < ; 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); }
}
注意:只能值对 jsonText格式的json的字符串进行处理,再复杂点的,就需要改写类中的方法了
使用时,请引用dll Newtonsoft.Json_2013_12_26_19_23.rar
json字串转换成泛型类的更多相关文章
- Gson把json串转换成java实体对象
Gson把json串转换成java实体对象的方法如下: 1.首先导入Gson的jar包,网上可以下载. java实体对象如下: public class Model { private double ...
- .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (一)
.net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (二) Json是WEB交互常见的数据,.net core 处理方式是转为强类型,没有对应的强类型会被抛弃,有时 ...
- 将形如:Oct 8, 2016 5:29:44 PM串转换成正常时间在真机上遇到的坑
将形如:Oct 8, 2016 5:29:44 PM串转换成正常时间在真机上遇到的坑 /** * 根据传入字符串 * * @param str 传入的日期字符串 形如:Oct 8, 2016 5:29 ...
- Newtonsoft.Json 把对象转换成json字符串
var resultJson = new { records = rowCount, page = pageindex, //总页数=(总页数+页大小-1)/页大小 total = (rowCount ...
- mormot 数据集转换为JSON字串
mormot 数据集转换为JSON字串 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graph ...
- .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (二)
.net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (二) .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (一) 上一篇主 ...
- Android项目开发全程(四)-- 将网络返回的json字符串轻松转换成listview列表
前面几篇博文介绍了从项目搭建到获取网络字符串,对一个项目的前期整体工作进行了详细的介绍,本篇接着上篇介绍一下怎么样优雅将网络返回的json字符串轻松转换成listview列表. 先上图,看一下效果. ...
- H面试程序(27):字串转换
//1 字串转换 //问题描述: //将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a: //若输 ...
- Java—JSON串转换成实体Bean对象模板
介绍 模板需求说明 开发中经常遇到前端传递过来的JSON串的转换,后端需要解析成对象,有解析成List的,也有解析成Map的. 依赖 <dependency> <groupId& ...
随机推荐
- [转] 在Jenkins Pipeline DSL中 遍历 groovy list
[From] https://stackoverflow.com/questions/36360097/iterating-a-groovy-list-in-jenkins-pipeline-dsl ...
- python爬虫之urllib库(三)
python爬虫之urllib库(三) urllib库 访问网页都是通过HTTP协议进行的,而HTTP协议是一种无状态的协议,即记不住来者何人.举个栗子,天猫上买东西,需要先登录天猫账号进入主页,再去 ...
- c#中的引用类型和值类型
一,c#中的值类型和引用类型 众所周知在c#中有两种基本类型,它们分别是值类型和引用类型:而每种类型都可以细分为如下类型: 什么是值类型和引用类型 什么是值类型: 进一步研究文档,你会发现所有的结构都 ...
- 网络编程- 解决黏包现象方案二之struct模块(七)
上面利用struct模块与方案一比较,减少一次发送和接收请求,因为方案一无法知道client端发送内容的长度到底有多长需要和接收OK.多一次请求防止黏包,减少网络延迟
- 使用 Dotfuscator 对代码进行混淆
Dotfuscator 简介 作为一种高级语言,c# 类库很容易被 .NET Reflector 这样的工具反编译.攻击者很容易从代码中找到数据库连接方式,加解密方法等重要信息.使用 dnspy 这样 ...
- Java正则表达式-匹配正负浮点数
记录缘由: 公司项目需要从xml中获取标识为NUMBER的字符串,将之存入数据库中,存入的列的类型即为NUMBER.当遇到非数字时,原实现是通过异常: String plainValue = null ...
- 80x25彩色字符模式
80x25彩色字符模式下显示缓冲区的结构: 在内存地址空间中,B8000H~BFFFFH共32KB的空间,为80x25彩色字符模式的显示缓冲区.往这个地址空间中写入数据,写入的内容会立即出现在显示器上 ...
- unittest之装饰器
前面讲到 unittest 里面 setUp 可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间.于是就想是不是可以 ...
- MySQL的模糊搜索
1.模糊搜索 第一时间我马上想到了关键字 like 1.1.所要查询的字段中包含特定 字符,但不确定其位置,使用两个%包起来 select * from phone where provider li ...
- zato集群部署
注: SQL ODB和Cluster’s config需要首先依次创建,其他三个次序随意 对不熟悉的命令,使用server create *** -h 查看帮助文档 修改完后配置文件,要重启(zato ...