整理代码,今天遇到一个问题,就是从一个场景接口获取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,然后解析成对象(一)的更多相关文章

  1. .net从网络接口地址获取json,然后解析成对象(二)

    整理代码,这是第二种方法来读取json,然后反序列化成对象的,代码如下: public static Order GetOrderInfo(string _tid, string _orderNo) ...

  2. C#将json字符串解析成对象

    首先我们在客户端生成json字符串,通过ajax把该字符串传到服务器端   //这是一个以id,email,age的json字符串   var jdata="[{\"id\&quo ...

  3. java操作JSON字符串转换成对象的时候如何可以不建立实体类也能获取数据

    引入依赖 <dependency>    <groupId>com.alibaba</groupId>    <artifactId>fastjson& ...

  4. VBScript把json字符串解析成json对象的2个方法

    这篇文章主要介绍了VBScript把json字符串解析成json对象的2个方法,本文通过MSScriptControl.ScriptControl和jscript实现,需要的朋友可以参考下 asp/v ...

  5. json 字符串转换成对象,对象转换成json字符串

    json   字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法:   [注意jquery版本问题] var str = '{"name":&qu ...

  6. .net 4中使用 dynamic,将json字符串转成对象的 万能方法。

    在.net 4中增加了对弱类型的支持.为和弱类型的对象进行数据交换提供了方法.我们常常会遇到将json字符串转成对象的情景,虽然可以使用 JavaScriptSerializer 或者 DataCon ...

  7. JSON字符串转换成对象时候 需要有默认构造器 因为这是通过反射创建的 反射是先通过默认构造器创建对象的

    JSON字符串转换成对象时候 需要有默认构造器 因为这是通过反射创建的 反射是先通过默认构造器创建对象的

  8. jQuery AJAX获取JSON数据解析多种方式示例

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. JSON字符串解析成JSON数据格式

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...

随机推荐

  1. CRM某些表加入审计

    --更新参数文件,设置Audit等级 alter system set audit_trail=db,extended scope=spfile; --更新参数文件,开始Audit alter sys ...

  2. BOM 对象--location、navigator、screen、history

    1.location 对象 location提供了与当前窗口中加载的文档有关的信息,还有一些导航功能.需要注意的是,window.location 和 document.location 引用的是同一 ...

  3. Oracle OLAP 与 OLTP 介绍

    文章出处:http://blog.csdn.net/tianlesoftware/article/details/5794844 感谢原作者的分享. 数据处理大致可以分成两大类:联机事务处理OLTP( ...

  4. Java Arrays

    最近经常有操作数组的需求,排序,倒转等操作,所以深入了解一下Arrays类 equals(a,b)比较数组a和数组b是否相等 toString(a)输出数组a binarySearch(a,i)二分查 ...

  5. ASP.NET 在请求中检测到包含潜在危险的数据,因为它可能包括 HTML 标记或脚本

    <textarea><%=Server.HtmlEncode(strContent)%></textarea> 转载:https://www.cnblogs.com ...

  6. WAS 与IHS集成问题

    1.安装好WAS与IHS后 发布Web发现无法启动 查阅资料后发现缺少插件Plugins 于是去下载安装对应版本的Plugins 发现还是有问题 后来想起发布web01时,插件还未安装.因此重新发布一 ...

  7. 二分+最短路 UVALive - 4223

    题目链接:https://vjudge.net/contest/244167#problem/E 这题做了好久都还是超时,看了博客才发现可以用二分+最短路(dijkstra和spfa都可以),也可以用 ...

  8. random 模块 时间模块(time) sys模块 os模块

    random  模块 1.随机小数 random.random()  0-1内的随机小数 random.uniform(1,5)  1-5范围内的随机小数 2.随机整数 random.randint( ...

  9. 牛客网 Wannafly挑战赛12 删除子串(线性dp)

    题目描述 给你一个长度为n且由a和b组成的字符串,你可以删除其中任意的部分(可以不删),使得删除后的子串“变化”次数小于等于m次且最长. 变化:如果a[i]!=a[i+1]则为一次变化.(且新的字符串 ...

  10. TZOJ 3663 最长路径(floyd)

    描述 网络是由很多交换机与网线组成的,网络中的信息可能会在这些网络中不断转发,给定任意两个交换机,我们需要从中找到最快的路径进行转发,我们定义转发过程中所经过的网线条数为两个交换机之间的路径长度.如果 ...