我正在将数据从数据库绑定到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
]]
}
此数据应由数据库提供。
任何人都可以告诉我如何完成任务
答案 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);
}
从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);
}