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

时间:2014-11-19 22:30:13

标签: c# asp.net json serialization

我已使用此实用程序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;
    }

3 个答案:

答案 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;
    }
相关问题