C#实现调用接口数据获取数据格式化XML、json转成Table的方法
废话不多说,直接上代码:
json 格式化转DataTable:
result为从接口得到的数据,格式化json的方法主要来自Newtonsoft.Json
JObject joUnit = JObject.Parse(result);
string a = Convert.ToString(joUnit["data"]["UnitComInfoList"]);
JArray jo = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(a);//反序列化为数组
DataTable table = DerializeToDataTable(jo, "UnitComInfoList");
/// <summary>
/// 创建datatable
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jo"></param>
/// <returns></returns>
public DataTable DerializeToDataTable(JArray jo, string TableName)
{
DataTable table = new DataTable();
table.TableName = TableName;
if (jo.Count > 0)
{
StringBuilder columns = new StringBuilder();
JObject objColumns = jo[0] as JObject;
//构造表头
foreach (JToken jkon in objColumns.AsEnumerable<JToken>())
{
string name = ((JProperty)(jkon)).Name;
columns.Append(name + ",");
table.Columns.Add(name);
}
//向表中添加数据
for (int i = 0; i < jo.Count; i++)
{
DataRow row = table.NewRow();
JObject obj = jo[i] as JObject;
foreach (JToken jkon in obj.AsEnumerable<JToken>())
{
string name = ((JProperty)(jkon)).Name;
string value = ((JProperty)(jkon)).Value.ToString();
row[name] = value;
}
table.Rows.Add(row);
}
}
return table;
}
xml格式化转DataTable:
public DataTable GetXMLData(string ResultXml)
{
XmlDocument doc = new XmlDocument();
DataTable newdt = new DataTable();
doc.LoadXml(ResultXml);
XmlNode nodeList = doc.SelectSingleNode("ReturnData").SelectSingleNode("Data");
if (nodeList != null)
{
DataTable dt = getDataTableFromXml("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + nodeList.OuterXml);
newdt = dt.Clone(); // 克隆dt 的结构,包括所有 dt 架构和约束,并无数据;
DataRow[] arrRows = dt.Select();
foreach (DataRow row in arrRows) // 将查询的结果添加到dt中;
{
newdt.Rows.Add(row.ItemArray);
}
}
return newdt;
}
/// 从XML生成DT
/// </summary>
/// <param name="sourceXml"></param>
/// <returns></returns>
public static DataTable getDataTableFromXml(string sourceXml)
{
if (sourceXml == null) return null;
DataTable mydt = new DataTable();
System.IO.StringReader sr = new System.IO.StringReader(sourceXml);
XmlTextReader myXmlTextReader = new XmlTextReader(sr);
DataSet ds = new DataSet();
ds.ReadXml(myXmlTextReader, XmlReadMode.Auto);
if (ds.Tables.Count > 0)
mydt = ds.Tables[0];
return mydt;
}
C#实现调用接口数据获取数据格式化XML、json转成Table的方法的更多相关文章
- JS:字符串转成json数据,和json转成字符串方法 iframe获取父级传过来的数据
字符串转成json数据,和json转成字符串方法 //转为JSON adinfo=JSON.parse(adinfo) //转为字符串 adinfo=JSON.stringify(adinfo) 大概 ...
- Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法
之前写过一篇记录文章,写的是将一个比较复杂的数据结构在前台组合起来后传递到后台. 当时并不太了解@RequestBody,也并没有使用js提供的JSON.stringify()方法 所有都是自己写的, ...
- 两种接口传送数据协议(xml和json)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/tianyazaiheruan/article/details/37659983 规范性接口开发 ...
- dataTable调用接口渲染数据,没有数据,报错
当没有数据的时候,报错: 解决方法: 在后台那边处理一下,当没有数据的时候,令 data : ' ' 或者 data : [ ] 前端代码: var loading = layer.load(1, { ...
- 【转】xml节点解析成字符串的方法
网址:http://blog.csdn.net/shanzhizi/article/details/8817532 ZC: 这是 libxml2的 之前汇总了一篇关于xml文档与字符串转换的文章,文章 ...
- Mbp通过筛选器和中间件实现异常,日志,事务及接口返回数据格式化aop处理.
Mbp应用服务层的AOP实现 实现方法:asp.net core mvc 筛选器 + 中间件 日志,事务,和接口返回结果统一格式化采用操作筛选器,而异常处理采用中间件来处理. 最开始,我是打算用aut ...
- 微信小程序调用接口返回数据或提交数据
由于小程序发起网络请求需要通过 wx.request 文档地址 https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html 习 ...
- c# 后台调用接口接收传过来的json
public string GetRequestTest(string url) { HttpWebRequest httpWebRequest = (HttpWebRequest)WebReques ...
- 将后端返回的数据在jsp中拼接成table列表
//先下载jquery js文件 放入项目中 jsp文件内容 <%@ page language="java" pageEncoding="UTF-8"% ...
随机推荐
- C# 同步更新系统时间
前言 在定位用户问题时,发现有些电脑,会出现系统时间不是最新的问题. 可能原因: 取消了勾选服务器时间同步 当前安装的系统,是一个未知来源系统,导致系统时间更新失败 而系统时间不正确,会导致IE选项- ...
- golang图片压缩
package main import ( //"encoding/json" "fmt" //"os" //&qu ...
- web 端即时通讯
1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Serve ...
- C++批量加载动态库函数方法
1.枚举定义enum { // 0 - GigE DLL (implicitly called) Func_isVersionCompliantDLL, Func_isDriver ...
- 高德地图开发之获取SHA1码
通过Android Studio获取SHA1 第一步.打开 Android Studio 的 Terminal 工具. 第二步.输入命令:keytool -v -list -keystore key ...
- 学习SQL笔记
SQL 语句 语法 AND / OR SELECT column_name(s)FROM table_nameWHERE conditionAND|OR condition ALTER TABLE A ...
- easyui的datetimebox时间格式化详解
今天公司让用easyui的datetimebox组件,而且还要让格式化成大家通用的那种,网上搜了很多,但差不多都是复制黏贴的,最后请教了下螃蟹. 感谢螃蟹抽空给做了个例子,现在拿出来和大家分享下,效果 ...
- [IOI2011]Race $O(nlog^{2}n)$ 做法
这个应该还不是正解,明天看一下正解到底是什么... Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in&qu ...
- 洛谷P2822 组合数问题 杨辉三角
没想到这道题竟然这么水- 我们发现m,n都非常小,完全可以O(nm)O(nm)O(nm)预处理出stripe数组,即代表(i,j)(i,j)(i,j) 及其向上的一列的个数,然后进行递推即可. #in ...
- ES2015 模板字符串 ``
js中类似`${xx,yy}`的语句是什么意思? `string` 是模板字符串,ES2015新增的符号. var x = 'a', y = 'b'; var z = `${x,y}`; //'b' ...