Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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# 如何创建json文件_C#_Json - Fatal编程技术网

C# 如何创建json文件

C# 如何创建json文件,c#,json,C#,Json,我已经编写了一个C#程序来生成“Json”文件,以便上传Way Bill 我的Json格式是:-(当我在Bill中上传时它不工作) 请帮帮我,怎么做 [{"Supply Type":"Outward","Sub Type":"Export","Doc Type":"Tax Invoice","Doc No":"PK/18/0015","Doc Date":"16/02/2018 00:00:00","From_OtherPartyName":"KH Exports India Private

我已经编写了一个C#程序来生成“Json”文件,以便上传Way Bill

我的Json格式是:-(当我在Bill中上传时它不工作)

请帮帮我,怎么做

[{"Supply Type":"Outward","Sub Type":"Export","Doc Type":"Tax Invoice","Doc No":"PK/18/0015","Doc Date":"16/02/2018 00:00:00","From_OtherPartyName":"KH Exports  India Private Limited Glove Division","From_GSTIN":"33AAACR1714R1ZA","From_Address1":"142/1,Trunk Road","From_Address2":"Perumugai","From_Place":"Vellore","From_Pin Code":"632009","From_State":"Tamil Nadu","To_OtherPartyName":"K H EXPORTS INDIA PRIVATE LIMITED","To_GSTIN":"33AAACR1714R1ZA","To_Address1":"GLOVE DIVISION, GODOWN","To_Address2":"NEW NO. 24, KUMARAPPA STREET,","To_Place":"Chennai","To_Pin Code":"600003","To_State":"Tamil Nadu","Product":"FINISHED LEATHER GLOVES FOR LADIES","Description":"","HSN":"42032920","Unit":"PAIRS","Qty":"25","Assessable Value":"678","Tax Rate (S+C+I+Cess)":"9+9+0+0","CGST Amount":"6102","SGST Amount":"6102","IGST Amount":"0","CESS Amount":"0","Trans Mode":"Road","Distance (Km)":"115","Trans Name":"","Trans ID":"","Trans DocNo":"","Trans Date":"","Vehicle No":"TN23CB8274","Errors List":""}]
下面的json工作正常(我从Way bill网站获得此json)

我已经尝试了以下,但它没有解决…请检查此代码

public bool WriteJason(DataTable dt, string path)
    {
        try
        {

            System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            List<Dictionary<string, string>> rows = new List<Dictionary<string, string>>();
            Dictionary<string, string> row = null;

            foreach (DataRow dr in dt.Rows)
            {
                row = new Dictionary<string, string>();
                foreach (DataColumn col in dt.Columns)
                {
                    row.Add(col.ColumnName.Trim().ToString(), Convert.ToString(dr[col]));
                }
                rows.Add(row);
            }
            string jsonstring = serializer.Serialize(rows);

            using (var file = new StreamWriter(path, false))
            {
                file.Write(jsonstring);
                file.Close();
                file.Dispose();
            }
            return true;
        }
        catch { return false; }
    }

正如@mcy在评论中提到的,您将更容易使用

为了进一步阐述这一观点,我个人将采用以下方法:

  • 定义与Json结构匹配的模型:

    private class JsonModel
    {
        public string Version { get; set; }
        public IList<JsonBillModel> BillLists { get; set; } = new List<JsonBillModel>();
    }
    
    private class JsonBillModel
    {
        public string UserGstin { get; set; }
        public string SupplyType { get; set; }
        public int SubSupplyType { get; set; }
        public string DocType { get; set; }
        //...
    }
    
  • 使用Json.NET将模型序列化为Json:

    var serializerSettings = new JsonSerializerSettings();
    serializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    var json = JsonConvert.SerializeObject(model, serializerSettings);
    File.WriteAllText(path, json);
    
  • 我们使用
    CamelCasePropertyNamesContractResolver
    契约解析器创建
    JsonSerializerSettings
    实例的原因是,我们的模型将在Json中生成密钥(因为我们的模型是以PascalCase格式编写的。如果这听起来令人困惑,请尝试省去ContractResolver行,自己看看结果

  • 使用您喜爱的测试库编写测试,以确保Json输出与所需输出匹配

  • 旁注:您还可以使用Json.NET将Json转换为模型的实例

    var model = JsonConvert.DeserializeObject<JsonModel>(json);
    
    var model=JsonConvert.DeserializeObject(json);
    
    您能修改格式吗?您的问题是什么?使用newtonsoft json框架,它更方便用户使用。
    var serializerSettings = new JsonSerializerSettings();
    serializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    var json = JsonConvert.SerializeObject(model, serializerSettings);
    File.WriteAllText(path, json);
    
    var model = JsonConvert.DeserializeObject<JsonModel>(json);