废话不多说,直接上代码:

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的方法的更多相关文章

  1. JS:字符串转成json数据,和json转成字符串方法 iframe获取父级传过来的数据

    字符串转成json数据,和json转成字符串方法 //转为JSON adinfo=JSON.parse(adinfo) //转为字符串 adinfo=JSON.stringify(adinfo) 大概 ...

  2. Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法

    之前写过一篇记录文章,写的是将一个比较复杂的数据结构在前台组合起来后传递到后台. 当时并不太了解@RequestBody,也并没有使用js提供的JSON.stringify()方法 所有都是自己写的, ...

  3. 两种接口传送数据协议(xml和json)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/tianyazaiheruan/article/details/37659983    规范性接口开发 ...

  4. dataTable调用接口渲染数据,没有数据,报错

    当没有数据的时候,报错: 解决方法: 在后台那边处理一下,当没有数据的时候,令 data : ' ' 或者 data : [ ] 前端代码: var loading = layer.load(1, { ...

  5. 【转】xml节点解析成字符串的方法

    网址:http://blog.csdn.net/shanzhizi/article/details/8817532 ZC: 这是 libxml2的 之前汇总了一篇关于xml文档与字符串转换的文章,文章 ...

  6. Mbp通过筛选器和中间件实现异常,日志,事务及接口返回数据格式化aop处理.

    Mbp应用服务层的AOP实现 实现方法:asp.net core mvc 筛选器 + 中间件 日志,事务,和接口返回结果统一格式化采用操作筛选器,而异常处理采用中间件来处理. 最开始,我是打算用aut ...

  7. 微信小程序调用接口返回数据或提交数据

    由于小程序发起网络请求需要通过 wx.request 文档地址 https://mp.weixin.qq.com/debug/wxadoc/dev/api/network-request.html 习 ...

  8. c# 后台调用接口接收传过来的json

    public string GetRequestTest(string url) { HttpWebRequest httpWebRequest = (HttpWebRequest)WebReques ...

  9. 将后端返回的数据在jsp中拼接成table列表

    //先下载jquery js文件 放入项目中 jsp文件内容 <%@ page language="java" pageEncoding="UTF-8"% ...

随机推荐

  1. 【转】In ASP.NET using jQuery Uploadify upload attachment

    Upload Uploadify is a JQuery plug-in, achieve the effect is very good, with progress display. Upload ...

  2. TCP心跳包

    所谓的心跳包就是客户端定时放送简单的信息给服务器端,告诉它我还在而已.代码就是每 隔几分钟发送一个固定信息给服务器端,服务器端回复一个固定信息.如果服务器端几分钟后没有收到客户端信息则视客户端断开.比 ...

  3. position记录元素原始位置

    position记录元素原始位置 css样式: li { width: 100px; height: 100px; margin: 10px 0 0 10px; background-color: # ...

  4. guice整合struts2,guice的使用(八)

    平时我们习惯用了spring整合struts2,今天我们就来见识一下guice整合struts2吧. 看web.xml配置: <?xml version="1.0" enco ...

  5. [转]Java设计模式学习心得

    http://tech.it168.com/focus/200902/java-design/index.html http://tech.it168.com/j/2007-05-17/2007051 ...

  6. TensorFlow-mnist

    训练代码: from __future__ import absolute_import from __future__ import division from __future__ import ...

  7. javascript中经典继承的兼容写法

    function create(obj) { // 2.1 判断浏览器支持不支持 Object.create // 如果支持,直接使用 Object.create // 如果不支持,自己实现 if(O ...

  8. 【Oracle】DG中 Switchover 主、备切换

    操作系统:OEL 5.6 数据库版本:Oracle11gR2  11.2.0.4.0 Switchover切换要求主库和备库在数据同步情况下进行,是主备之间的正常切换,主要用于日常维护.灾备演练等.切 ...

  9. 学习SQL笔记

    SQL 语句 语法 AND / OR SELECT column_name(s)FROM table_nameWHERE conditionAND|OR condition ALTER TABLE A ...

  10. (转)基于MVC4+EasyUI的Web开发框架经验总结(3)- 使用Json实体类构建菜单数据

    http://www.cnblogs.com/wuhuacong/p/3669708.html 最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开 ...