转换为 JSON 数组,而不是常规对象
本文关键字:常规 对象 JSON 数组 转换 | 更新日期: 2023-09-27 18:31:00
我已使用此实用程序 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 命令db.Query("SELECT * FROM my_table")
获取的IEnumerable
。
注意:我想要一个可以做到这一点的通用函数 - 我知道如何只做一件事,但我正在从事的项目需要以同样的方式为许多人完成它。 我尝试编写自己的方法来执行此操作,但由于 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;
}
您尝试输出的是一个数组数组。 从可枚举或记录开始(在您的情况下,它看起来像是具有称为 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
};
我想
你在问类似的东西。
您必须从 json 手动组装数组。
我找到了解决方案 - IEnumerable 类型需要是"动态的"。 从那里开始非常简单
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;
}