Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中将多个Json对象转换为DataTable或DataSet#_C# - Fatal编程技术网

C# 如何在C中将多个Json对象转换为DataTable或DataSet#

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”:{ “类型”:“库存”,

我有一个下面的json对象。我想知道两点

  • 如何在C#代码中将下面的json对象转换为DataTable或Dataset
  • 转换后,在C#代码中反向返回到(如何将DataTable转换为Json对象)。 请给我提供示例代码
  • [
    {
    “交易”:{
    “版本”:“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());
        }
    }