C# 如何在asp.net中更改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

我正在将数据库中的数据绑定到JSON文件。通过使用代码隐藏文件中的代码

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] ]
}