C# 如何创建json文件
我已经编写了一个C#程序来生成“Json”文件,以便上传Way Bill 我的Json格式是:-(当我在Bill中上传时它不工作) 请帮帮我,怎么做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
[{"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在评论中提到的,您将更容易使用 为了进一步阐述这一观点,我个人将采用以下方法:
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; }
//...
}
var serializerSettings = new JsonSerializerSettings();
serializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
var json = JsonConvert.SerializeObject(model, serializerSettings);
File.WriteAllText(path, json);
CamelCasePropertyNamesContractResolver
契约解析器创建JsonSerializerSettings
实例的原因是,我们的模型将在Json中生成密钥(因为我们的模型是以PascalCase格式编写的。如果这听起来令人困惑,请尝试省去ContractResolver行,自己看看结果
旁注:您还可以使用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);