如何在asp.net中更改Json保存文件内容

时间:2017-02-10 07:51:56

标签: c# asp.net json

我正在将数据从数据库绑定到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
    ]]
}

此数据应由数据库提供。

任何人都可以告诉我如何完成任务

2 个答案:

答案 0 :(得分: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; }
}

测试方法:

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);
}

结果: enter image description here

从json创建模型类的简单方法是使用像http://json2csharp.com/这样的简单工具。基本上现在你只尝试序列化List<object>列表,更改它并使用如上所示的模型类。

答案 1 :(得分:1)

我做了这个简单的例子,你可以运行它,你会看到完全相同的结果。

首先,我创建了一个表示数据库对象的类

auto

然后我创建了这个方法来获得你想要的东西

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);    
}