我已使用此实用程序http://www.convertcsv.com/csv-to-json.htm来格式化数据表。它有一个很棒的选项,允许您转换为JSON或JSON数组。那个JSON数组就是我想要的。当我使用像JSON.Net这样的实用程序进行序列化时,它们会给我标准的JSON格式。我不希望这样 - 我只是想要数组,所以我基本上可以在我的javascript中重现表格布局。
以下是示例表数据结构
column1 column2 column3
c1r1 c2r1 c3r1
c1r2 c2r2 c3r2
c1r3 c2r3 c3r3
我想在序列化时看起来像这样:
[[c1r1,c2r1,c3r1],
[c1r2,c2r2,c3r2],
[c1r3,c2r3,c3r3]]
但是使用像JSON.net这样的实用程序的标准序列化方法将是
[
{
column1:c1r1,
column2:c2r1,
column3:c3r1
},
{
column1:c1r2,
column2:c2r2,
column3:c3r2
},
{
column1:c1r3,
column2:c2r3,
column3:c3r3
}
]
我的问题是,有没有人知道一种剥离列名的方法,只是让它像我所展示的简单的2d数组一样?
数据结构是直接从sql命令IEnumerable
获取的db.Query("SELECT * FROM my_table")
。
注意:我想拥有一个能够做到这一点的通用函数 - 我知道如何只做一件事,但我正在研究的项目需要以同样的方式为许多人完成。我尝试编写自己的方法来执行此操作,但由于c#的限制,它无法正常工作。
public static string fromListToJSONArray(IEnumerable<Object> listToUse, string[] fieldNames)
{
string JSONString = "[";
foreach (var item in listToUse)
{
JSONString += item[fieldName[0]]; //This is the line you can't do in c#!! Don't know how to go around this.
}
JSONString += "]";
return JSONString;
}
答案 0 :(得分:1)
您要输出的是一个数组数组。从可枚举或记录开始(在您的情况下,它看起来像有列column1,column2,column3)。
如果查询将生成一个已知结果集,您可以在转换为JSON之前将每行简单地转换为数组。
var qry = /*Enumerable of some database query*/
return from rec in wry
select new string[]
{
rec.column1,
rec.column2,
rec.column3
};
答案 1 :(得分:0)
我认为你问的问题类似于this。
你必须从json手动组装数组。
答案 2 :(得分:0)
我找到了解决方案 - IEnumerable类型需要&#34;动态&#34;。从那里很简单
public static string fromListToJSONArray(IEnumerable<dynamic> listToUse)
{
string JSONString = "[";
foreach (var item in listToUse)
{
if(isFirst == false)
JSONString += ",";
else
isFirst = false;
JSONString += "\"" + item[0] + "\"";
}
JSONString += "]";
return JSONString;
JSONString += "]";
return JSONString;
}