C# 如何在asp.net中更改Json保存文件内容
我正在将数据库中的数据绑定到JSON文件。通过使用代码隐藏文件中的代码C# 如何在asp.net中更改Json保存文件内容,c#,asp.net,json,C#,Asp.net,Json,我正在将数据库中的数据绑定到JSON文件。通过使用代码隐藏文件中的代码 string JSONString = JsonConvert.SerializeObject(datatable); 默认情况下,数据表以这种格式存储在json文件中。我已附上下面给出的代码 [ { "ProductID": 17, "ProductName": "Alice Mutton" }, { "ProductID": 3, "ProductName": "Anisee
string JSONString = JsonConvert.SerializeObject(datatable);
默认情况下,数据表以这种格式存储在json文件中。我已附上下面给出的代码
[
{
"ProductID": 17,
"ProductName": "Alice Mutton"
},
{
"ProductID": 3,
"ProductName": "Aniseed Syrup"
},
{
"ProductID": 40,
"ProductName": "Boston Crab Meat"
}]
我想像这样将此保存格式更改为
{
"from_ProductName": "Alice Mutton",// Too Tip
"to_ProductName": "Boston Crab Meat",// Too Tip
"column_names": [
"ProductName",
"ProductID"
],
"data": [
[
"Alice Mutton",
17
],
[
"Aniseed Syrup",
2
],
[
"Boston Crab Meat",
250.1
]]
}
这些数据应该来自数据库
有谁能告诉我如何完成这项任务吗?你的模型课应该是这样的:
public class RootObject
{
public string from_ProductName { get; set; }
public string to_ProductName { get; set; }
public List<string> column_names { get; set; }
public List<List<object>> data { get; set; }
}
公共类根对象
{
_ProductName{get;set;}中的公共字符串
_ProductName{get;set;}的公共字符串
公共列表列名称{get;set;}
公共列表数据{get;set;}
}
试验方法:
public void TestCreateModel()
{
RootObject rootObject = new RootObject();
rootObject.from_ProductName = "Prod1";
rootObject.to_ProductName = "Prod2";
rootObject.column_names = new List<string>(){"ProductName", "ProductID"};
var dataList = new List<object>() {"Alice Mutton," + 17};
var dataList1 = new List<object>() {"Aniseed Syrup," + 2};
var dataList2 = new List<object>() {"Boston Crab Meat," + 250.1};
rootObject.data = new List<List<object>>() {dataList, dataList1, dataList2};
string JSONString = JsonConvert.SerializeObject(rootObject);
}
public void TestCreateModel()
{
RootObject RootObject=新的RootObject();
rootObject.from_ProductName=“Prod1”;
rootObject.to_ProductName=“Prod2”;
rootObject.column_names=新列表(){“ProductName”,“ProductID”};
var dataList=newlist(){“Alice Mutton,+17};
var dataList1=新列表(){“茴香糖浆,+2};
var dataList2=新列表(){“波士顿蟹肉”+250.1};
rootObject.data=new List(){dataList,dataList1,dataList2};
字符串JSONString=JsonConvert.SerializeObject(rootObject);
}
结果:
从json生成模型类的简单方法是使用简单的工具,如。基本上,现在您正在尝试仅序列化
列表的列表,对其进行更改并使用上面这样的模型类。我制作了这个简单的示例,您可以运行它,您将看到完全相同的结果
首先,我创建了一个类来表示您的DB对象
private class Product
{
public int ProductID { get; set; }
public string ProductName { get; set; }
}
然后我创建了这个方法来得到你想要的
private async void button1_Click(object sender, EventArgs e)
{
var originalJson = "[\r\n {\r\n \"ProductID\": 17,\r\n \"ProductName\": \"Alice Mutton\"\r\n },\r\n {\r\n \"ProductID\": 3,\r\n \"ProductName\": \"Aniseed Syrup\"\r\n },\r\n {\r\n \"ProductID\": 40,\r\n \"ProductName\": \"Boston Crab Meat\"\r\n }] ";
var products = JsonConvert.DeserializeObject<List<Product>>(originalJson);
var resultObject = new
{
from_ProductName = products.OrderBy(p => p.ProductName).FirstOrDefault().ProductName,
to_ProductName = products.OrderByDescending(p => p.ProductName).FirstOrDefault().ProductName,
column_names = new List<string> { nameof(Product.ProductName), nameof(Product.ProductID) },
data = products.Select(p => new List<object> { p.ProductName, p.ProductID })
};
var saveFormat = JsonConvert.SerializeObject(resultObject);
}
字符串JSONString=JsonConvert.SerializeObject(datatable);使用(StreamWriter w=newstreamwriter(HttpContext.Current.Server.MapPath(“~/mew12.json”),true)){w.WriteLine(JSONString);}在这里如何使用entity
{
"from_ProductName": "Alice Mutton",
"to_ProductName": "Boston Crab Meat",
"column_names": ["ProductName", "ProductID"],
"data": [["Alice Mutton", 17],
["Aniseed Syrup", 3],
["Boston Crab Meat", 40] ]
}