.net从网络接口地址获取json,然后解析成对象(一)
整理代码,今天遇到一个问题,就是从一个场景接口获取json,然后解析成对象。之前的时候都好好的,这次返回的json字符串里,由于字符编码的问题,格式上不能转换。一直以为是解析的过程编码有误,试了utf-8,gb2312,Default、Unicode,发现都不行,转回头去找获取的时候字符编码,发现是gbk,那就了然了。果断统一改成utf-8之后,数据获取就正常了。
这段代码从获取到解析,还不是很熟练,所以把整个过程都捋一遍。
首先是根据网络地址和参数获取的方法:
public static string CreateOrderList(string _tid, string _dateFrom, string _dateTo, string _state, int _page)
{
try
{
StringBuilder serviceUrl = new StringBuilder();
serviceUrl.Append("http://10.10.10.10/queryOrderOne?");
serviceUrl.AppendFormat("tid={0}&createDateFrom={1}&createDateTo={2}&pageNum={4}&pageSize=10&orderState={3}", _tid, _dateFrom, _dateTo, _state, _page);
string _result = ExcuteGet(serviceUrl.ToString(),"");
return _result;
}
catch (Exception e)
{
AddLog(_tid, "获取订单List异常:" + e.Message, "GetOrderList");
return "";
}
}
ExcuteGet方法是获取地址的具体方法,代码如下:
public static string ExcuteGet(string serviceUrl, string ReqInfo)
{
using (null)
{
ServicePointManager.ServerCertificateValidationCallback += ValidateServerCertificate;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serviceUrl);
request.CookieContainer = new CookieContainer();
request.Headers.Add("userName", "test"); //设置信息头用户名
request.Headers.Add("password", ""); //设置信息头密码
request.KeepAlive = true;
request.Method = "GET";
request.ContentType = "application/x-www-form-urlencoded";
//添加发送数据
Encoding encoding = Encoding.GetEncoding("utf-8");
if (!ReqInfo.Equals(""))
{
ReqInfo = "request=" + ReqInfo;
byte[] postData = encoding.GetBytes(ReqInfo);
request.ContentLength = postData.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postData, , postData.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//获取返回数据
Stream responseStream = response.GetResponseStream();
if (responseStream == null) return "";
StreamReader streamReader = new StreamReader(responseStream, encoding);
string retString = streamReader.ReadToEnd();
streamReader.Close();
responseStream.Close();
return retString;
}
}
还有一部分:
private static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
之后就是解析了,方法如下:
public static List<OrderList> GetOrderIList(string _dStrat, string _dEnd, string _tid, string _billState, int _page)
{
using (null)
{
try
{
string _jsonResult = CreateOrderList(_tid, _dStrat, _dEnd, _billState, _page);
OrderList _addResult = _jsonResult.JsonTodeserialize<OrderList>(Encoding.GetEncoding("utf-8"));
List<OrderList> _searchList = new List<OrderList>();
_searchList.Add(_addResult);
return _searchList;
}
catch (Exception)
{
return new List<OrderList>();
}
}
}
orderlist对象如下:
public class OrderList
{
public List<resultList> resultList { get; set; }
public string totalRecord { get; set; }
public string totalPage { get; set; }
}
public class resultList
{
public string orderState { get; set; }
public string Name { get; set; }
public string orderNum { get; set; }
public string productTypes { get; set; }
}
.net从网络接口地址获取json,然后解析成对象(一)的更多相关文章
- .net从网络接口地址获取json,然后解析成对象(二)
整理代码,这是第二种方法来读取json,然后反序列化成对象的,代码如下: public static Order GetOrderInfo(string _tid, string _orderNo) ...
- C#将json字符串解析成对象
首先我们在客户端生成json字符串,通过ajax把该字符串传到服务器端 //这是一个以id,email,age的json字符串 var jdata="[{\"id\&quo ...
- java操作JSON字符串转换成对象的时候如何可以不建立实体类也能获取数据
引入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson& ...
- VBScript把json字符串解析成json对象的2个方法
这篇文章主要介绍了VBScript把json字符串解析成json对象的2个方法,本文通过MSScriptControl.ScriptControl和jscript实现,需要的朋友可以参考下 asp/v ...
- json 字符串转换成对象,对象转换成json字符串
json 字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法: [注意jquery版本问题] var str = '{"name":&qu ...
- .net 4中使用 dynamic,将json字符串转成对象的 万能方法。
在.net 4中增加了对弱类型的支持.为和弱类型的对象进行数据交换提供了方法.我们常常会遇到将json字符串转成对象的情景,虽然可以使用 JavaScriptSerializer 或者 DataCon ...
- JSON字符串转换成对象时候 需要有默认构造器 因为这是通过反射创建的 反射是先通过默认构造器创建对象的
JSON字符串转换成对象时候 需要有默认构造器 因为这是通过反射创建的 反射是先通过默认构造器创建对象的
- jQuery AJAX获取JSON数据解析多种方式示例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JSON字符串解析成JSON数据格式
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...
随机推荐
- day15模块内容
1.生成器表达式 先说三元表达式如下 res = [i for i in range(10) if 1 > 5] 这样res就是一个列表6,7,8,9] 只要在这个基础上稍加调整,如下 方括号改 ...
- Pandas文本操作之读取操作
读写文本格式的数据 pandas中的解析函数 函数 说明 read_csv 从文件.url.文件型对象中加载带分隔符的数据,默认分隔符为逗号 read_table 从文件.url.文件型对象中加载带分 ...
- .net 中使用oracle 的sql 语句
string sqlString = "Select * From emp Where EMPNO=7369“; 一定不要写成 string sqlString = "Selec ...
- 使用iptables禁止外网访问tomcat的8080端口
如果项目同时使用了nginx反向代理服务器和tomcat等web服务器,并且两台服务器都暴露于公网中,那么通常我们会禁止外网直接访问tomcat,因为以下原因: 1.如果可以直接访问tomcat,那么 ...
- 手机端用swiper组件 轮播图设置后右侧出现空白 及 部分手机浏览器打开网页空白
我的方法是设置内容css overflow:hidden;width:100%; ok. 之前搜到一个方法也可以,就是设置css height: auto;overflow-y: scroll; 但是 ...
- Jmeter录制APP脚本
启动 jmeter.bat 在 Test Plan 下 添加 Thread Group 在 WorkBench 下 添加 HTTP(S) Test Script Recorder: 配置 Global ...
- Angular之模版引用变量
A template reference variable is often a reference to a DOM element within a template. It can also b ...
- am start的总结,-d参数的总结,以及python中传递内容包含中文及特殊字符&的解决方案
一.am start的内容的整理 主要包含以下内容:am start的常规操作及参数的含义,-d 参数的含义,以及如何在APK中设置参数获取 使用命令如下:adb shell am start -n ...
- 【Linux 线程】线程同步《一》
1.线程同步概念 线程同步:在多个线程访问共享数据时,有先后次序. 在一般情况下,创建一个线程是不能提高程序的执行效率的,所以要创建多个线程.但是多个线程同时运行的时候可能调用线程函数,在多个线程同时 ...
- Bootstrap(3) 表格与按钮
1.表格 基本格式,实现基本的表格样式 <table class="table"> <thead> <tr> <th>编号</ ...