C# 如何在C中将多个Json对象转换为DataTable或DataSet#
我有一个下面的json对象。我想知道两点C# 如何在C中将多个Json对象转换为DataTable或DataSet#,c#,C#,我有一个下面的json对象。我想知道两点 如何在C#代码中将下面的json对象转换为DataTable或Dataset 转换后,在C#代码中反向返回到(如何将DataTable转换为Json对象)。 请给我提供示例代码 [ { “交易”:{ “版本”:“1.01”, “TranDtls”:{ “税收”:“商品及服务税”, “SupTyp”:“B2B”, “RegRev”:“Y”, “EcmGstin”:空, “IgstOnIntra”:“N” }, “DocDtls”:{ “类型”:“库存”,
[
{
“交易”:{
“版本”:“1.01”,
“TranDtls”:{
“税收”:“商品及服务税”,
“SupTyp”:“B2B”,
“RegRev”:“Y”,
“EcmGstin”:空,
“IgstOnIntra”:“N”
},
“DocDtls”:{
“类型”:“库存”,
“否”:“DAOC/007”,
“Dt”:“10/08/2020”
},
“卖方TLS”:{
“Gstin”:“29AAFCD5862R000”,
“LglNm”:“NIC公司私人有限公司”,
“TrdNm”:“NIC工业”,
“地址1”:“库文普第五街区布局图”,
“Addr2”:“kuvempu布局”,
“Loc”:“甘迪纳格尔”,
“Pin”:560037,
“Stcd”:“29”,
“Ph”:“900000000”,
“Em”:abc@gmail.com"
},
“买方TLS”:{
“Gstin”:“29AWGPV7107B1Z1”,
“LglNm”:“XYZ公司私人有限公司”,
“TrdNm”:“XYZ工业”,
“Pos”:“12”,
“地址1”:“kuvempu第7街区布局图”,
“Addr2”:“kuvempu布局”,
“Loc”:“甘迪纳格尔”,
“Pin”:562160,
“Stcd”:“29”,
“Ph”:“91111111”,
“Em”:xyz@yahoo.com"
},
“DispDtls”:{
“Nm”:“ABC公司私人有限公司”,
“地址1”:“kuvempu第7街区布局图”,
“Addr2”:“kuvempu布局”,
“Loc”:“Banagalore”,
“Pin”:562160,
“Stcd”:“29”
},
“ShipDtls”:{
“Gstin”:“29AWGPV7107B1Z1”,
“LglNm”:“CBE公司私人有限公司”,
“TrdNm”:“kuvempu布局”,
“地址1”:“kuvempu第7街区布局图”,
“Addr2”:“kuvempu布局”,
“Loc”:“Banagalore”,
“Pin”:562160,
“Stcd”:“29”
},
“项目列表”:[
{
“SlNo”:“1”,
“PrdDesc”:“大米”,
“IsServc”:“N”,
“HsnCd”:“1001”,
“Barcde”:“123456”,
“数量”:100.345,
“免费数量”:10,
“单位”:“袋子”,
“单价”:99.545,
“总金额”:9988.84,
“折扣”:10,
“税收前”:1,
“阿萨姆特”:9978.84,
“GstRt”:12.0,
“IgstAmt”:1197.46,
“CgstAmt”:0,
“军士长”:0,
“CesRt”:5,
“CesAmt”:498.94,
“CesNonAdvlAmt”:10,
“州议会”:12,
“州金额”:1197.46,
“州非广告”:5,
“OthChrg”:10,
“TotItemVal”:12897.7,
“OrdLineRef”:“3256”,
“组织”:“AG”,
“PrdSlNo”:“12345”,
“BchDtls”:{
“Nm”:“123456”,
“出口”:“2020年8月1日”,
“WrDt”:“2020年9月1日”
},
“AttribDtls”:[
{
“纳米”:“大米”,
“Val”:“10000”
}
]
}
],
“ValDtls”:{
“AssVal”:9978.84,
“CgstVal”:0,
“SgstVal”:0,
“IgstVal”:1197.46,
“塞斯瓦尔”:508.94,
“StCesVal”:1202.46,
“折扣”:10,
“OthChrg”:20,
“RndOffAmt”:0.3,
“Totinval”:12908,
“Totinvalfc”:12897.7
},
“付费电话”:{
“Nm”:“ABCDE”,
“账户”:“5697389713210”,
“方式”:“现金”,
“FininsBr”:“SBIN11000”,
“付款期限”:“100”,
“PayInstr”:“礼物”,
“CrTrn”:“测试”,
“DirDr”:“test”,
“CrDay”:100,
“PaidAmt”:10000,
“付款到期日”:5000
},
“RefDtls”:{
“InvRm”:“测试”,
“DocPerdDtls”:{
“InvStDt”:“2020年8月1日”,
“InvEndDt”:“2020年9月1日”
},
“预docdtls”:[
{
“InvNo”:“DOC/002”,
“InvDt”:“2020年8月1日”,
“OthRefNo”:“123456”
}
],
“合同”:[
{
“RecAdvRefr”:“Doc/003”,
“RECADVT”:“2020年8月1日”,
“Tendrefr”:“Abc001”,
“承包商”:“Co123”,
“Extrefr”:“Yo456”,
“项目报告”:“Doc-456”,
“Porefr”:“Doc-789”,
“PoRefDt”:“2020年8月1日”
}
]
},
“AddlDocDtls”:[
{
“Url”:”https://einv-apisandbox.nic.in",
“文档”:“测试文档”,
“信息”:“文档测试”
}
],
“ExpDtls”:{
“船号”:“A-248”,
“船舶运输部”:“2020年8月1日”,
“端口”:“INABG1”,
“RefClm”:“N”,
“ForCur”:“AED”,
“代码”:“AE”
},
“EwbDtls”:{
“TransId”:“12AWGPV7107B1Z1”,
“TransName”:“XYZ导出”,
“距离”:100,
“TransDocNo”:“DOC01”,
“TransDocDt”:“2020年8月10日”,
“维诺”:“ka123456”,
“VehType”:“R”,
“TransMode”:“1”
}
}
}
]
您可以在这里查看
有很多方法可以用来从json字符串实例化对象
如果您不能使用任何第三方库,如Newtonsoft.Json,您可以使用JsonReaderWriterFactory
public static TEntity Create<TEntity>(string json)
{
using (var memoryStream = new MemoryStream())
{
byte[] jsonBytes = Encoding.UTF8.GetBytes(json);
memoryStream.Write(jsonBytes, 0, jsonBytes.Length);
memoryStream.Seek(0, SeekOrigin.Begin);
using (var jsonReader = JsonReaderWriterFactory.CreateJsonReader(
memoryStream,
Encoding.UTF8,
XmlDictionaryReaderQuotas.Max,
null))
{
var serializer = new DataContractJsonSerializer(typeof(TEntity));
TEntity entity = (TEntity)serializer.ReadObject(jsonReader);
return entity;
}
}
}
然后,您只需要使用C#来使用对象实例填充所需的数据集
您不包括您的尝试,但包括大量未格式化的JSON-1欢迎使用堆栈溢出。此站点不是代码请求站点。如果您需要代码方面的帮助,您需要展示到目前为止您所做的工作,描述您不了解的内容,描述代码的输出,并告诉我们您希望它做什么。阅读此newtonsoft json感谢上面的代码,您能用数据集而不是实体的代码吗
public static string Create(object entity)
{
var serializer = new DataContractJsonSerializer(entity.GetType());
using (var stream = new MemoryStream())
{
using (var writer = JsonReaderWriterFactory.CreateJsonWriter(stream, Encoding.UTF8))
{
serializer.WriteObject(writer, entity);
}
return Encoding.UTF8.GetString(stream.ToArray());
}
}