C#实现调用接口数据获取数据格式化XML、json转成Table的方法

摘要:
xmlversion="1.0"encoding="UTF-8"?

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

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的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IOS开发 应用程序图标数字角标[从源码学设计] Flume 之 memory channel下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

handsontable 问题

碰到问题了,去官网上找community:http://docs.handsontable.com/0.16.1/tutorial-quick-start.html 1、 描述:把handson table放在bootstrap tab中,首次没有激活,table没有正常显示。 原因:这种情况下,table invisible,所以不会调用render()...

Spring Boot -- Spring Boot之@Async异步调用、Mybatis、事务管理等

这一节将在上一节的基础上,继续深入学习Spring Boot相关知识,其中主要包括@Async异步调用,@Value自定义参数、Mybatis、事务管理等。 本节所使用的代码是在上一节项目代码中,继续追加的,因此需要先学习上一节内容。 一、使用@Async实现异步调用 要在springboot中使用异步调用方法,只要在被调用的方法上面加上@Async就可以...

xml和json之间的转换

/*** xml转json* @author yizw**/public class XmlExercise { /*** 将xml字符串<STRONG>转换</STRONG>为JSON字符串* * @param xmlString* xml字符串* @return JSON<STRONG>对象</STRONG&g...

C# String 前面不足位数补零的方法

int i=10;方法1:Console.WriteLine(i.ToString("D5"));方法2:Console.WriteLine(i.ToString().PadLeft(5,'0'));//推荐方法3:Console.WriteLine(i.ToString("00000")); 在 C# 中可以对字符串使用 PadLeft 和 PadRi...

Android 菜单(OptionMenu)大全 建立你自己的菜单

菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu),今天这讲是OptionsMenu    一、概述   public boolean onCreateOptionsMenu(Menu menu):使用此方法调用Optio...

Java 音频加水印

先解释一下什么是音频加水印: 音频加水印就是在一段音频中通过混音加入另一段音频,目的是让音频可以公开分享并有效保护原创。 本文主要纪录自己关于给音频加水印的技术调研。 开发语言:Java,开发所处系统环境Mac 使用了开源软件:FFmpeg 4.2.4 FFmpeg官网下载链接:https://ffmpeg.org/download.html#build-...