转换为 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;
    }

转换为 JSON 数组,而不是常规对象

您尝试输出的是一个数组数组。 从可枚举或记录开始(在您的情况下,它看起来像是具有称为 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;
    }