2017-02-10 88 views
1

我將數據庫中的數據綁定到JSON文件。通過在文件後面的代碼中使用代碼。如何更改asp.net中的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 
    ]] 
} 

這個數據應該來自數據庫。

任何一個可以告訴我如何實現任務

回答

1

我做了這個簡單的例子,你可以運行它,你會看到完全相同的結果,你想要的。

首先,我創建類來表示您的數據庫對象

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

然後漂亮的打印結果如下:

{ 
    "from_ProductName": "Alice Mutton", 
    "to_ProductName": "Boston Crab Meat", 
    "column_names": ["ProductName", "ProductID"], 
    "data": [["Alice Mutton", 17], 
      ["Aniseed Syrup", 3], 
      ["Boston Crab Meat", 40] ] 
} 
+0

感謝你massmass它工作正常.. –

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

從jso引發模型類的簡單方法n使用簡單的工具,如http://json2csharp.com/。現在基本上你只想序列化List<object>列表,改變它並使用上面的模型類。

+0

string JSONString = JsonConvert.SerializeObject(datatable);使用(StreamWriter w = new StreamWriter(HttpContext.Current.Server.MapPath(「〜/ mew12.json」),true)) w.WriteLine(JSONString); } –

+0

這裏我如何使用enitity –