C# 如何从C为Google图表格式化JSON#

C# 如何从C为Google图表格式化JSON#,c#,json,C#,Json,我正在尝试从c#输出JSON以用于谷歌图表 目前,我使用JSON.Net构建它: JArray arrB = new JArray( from c in cards where c.complete group c by new { date = Convert.ToDateTime(c.completed).Date } in

我正在尝试从c#输出JSON以用于谷歌图表

目前,我使用JSON.Net构建它:

  JArray arrB =     new JArray(
                        from c in cards
                        where c.complete
                               group c by new { date = Convert.ToDateTime(c.completed).Date } into g
                               select new JObject(
                                   new JProperty("date", g.Key.date),
                                   new JProperty("completedHours", g.Sum(x => x.estHours))
                                   ) 
                        );
其输出如下:

 { "burndown" : [ { "completedHours" : 30.0,
[ { "completedHours" : 30.0,
    "date" : "2014-03-26T00:00:00+00:00"
  },
  { "completedHours" : 3.0,
    "date" : "2014-04-03T00:00:00+01:00"
  },
  { "completedHours" : 3.0,
    "date" : "2014-03-28T00:00:00+00:00"
  },
  { "completedHours" : 1.0,
    "date" : "2014-03-27T00:00:00+00:00"
  }
]
然而,谷歌图表不喜欢这样。据我所知,我需要对它进行格式化,使它在第一个数据块中有列标题,然后在第二个数据块中有内容。我是JSON新手,所以不知道该怎么做

编辑:添加“正确”结构

从Google Charts文档中可以看出,正确的格式如下:

{"cols":[{"id":"Col1","label":"","type":"date"}],
  "rows":[
    {"c":[{"v":"a"},{"v":"Date(2010,10,6)"}]},
    {"c":[{"v":"b"},{"v":"Date(2010,10,7)"}]}
  ]
} 
public class Col
{
    public string id { get; set; }
    public string label { get; set; }
    public string type { get; set; }
}

public class C
{
    public string v { get; set; }
}

public class Row
{
    public List<C> c { get; set; }
}

public class RootObject
{
    public List<Col> cols { get; set; }
    public List<Row> rows { get; set; }
}
var rootObject = new RootObject()
{
    cols = new List<Col>
    {
        new Col {id = "1", label = "2", type = "string"}
    },
    rows = new List<Row>()
    {
        new Row 
        {
           c = new List<C> { 
               new C { v = "a" },
               new C { v = "b"}
           }
        }
    }
};

请参阅:

根据JSON模式,对象层次结构需要如下所示:

{"cols":[{"id":"Col1","label":"","type":"date"}],
  "rows":[
    {"c":[{"v":"a"},{"v":"Date(2010,10,6)"}]},
    {"c":[{"v":"b"},{"v":"Date(2010,10,7)"}]}
  ]
} 
public class Col
{
    public string id { get; set; }
    public string label { get; set; }
    public string type { get; set; }
}

public class C
{
    public string v { get; set; }
}

public class Row
{
    public List<C> c { get; set; }
}

public class RootObject
{
    public List<Col> cols { get; set; }
    public List<Row> rows { get; set; }
}
var rootObject = new RootObject()
{
    cols = new List<Col>
    {
        new Col {id = "1", label = "2", type = "string"}
    },
    rows = new List<Row>()
    {
        new Row 
        {
           c = new List<C> { 
               new C { v = "a" },
               new C { v = "b"}
           }
        }
    }
};
公共类Col
{
公共字符串id{get;set;}
公共字符串标签{get;set;}
公共字符串类型{get;set;}
}
公共C类
{
公共字符串v{get;set;}
}
公共类行
{
公共列表c{get;set;}
}
公共类根对象
{
公共列表列{get;set;}
公共列表行{get;set;}
}
因此,要构建json,您需要执行以下操作:

{"cols":[{"id":"Col1","label":"","type":"date"}],
  "rows":[
    {"c":[{"v":"a"},{"v":"Date(2010,10,6)"}]},
    {"c":[{"v":"b"},{"v":"Date(2010,10,7)"}]}
  ]
} 
public class Col
{
    public string id { get; set; }
    public string label { get; set; }
    public string type { get; set; }
}

public class C
{
    public string v { get; set; }
}

public class Row
{
    public List<C> c { get; set; }
}

public class RootObject
{
    public List<Col> cols { get; set; }
    public List<Row> rows { get; set; }
}
var rootObject = new RootObject()
{
    cols = new List<Col>
    {
        new Col {id = "1", label = "2", type = "string"}
    },
    rows = new List<Row>()
    {
        new Row 
        {
           c = new List<C> { 
               new C { v = "a" },
               new C { v = "b"}
           }
        }
    }
};
var rootObject=new rootObject()
{
cols=新列表
{
新列{id=“1”,label=“2”,type=“string”}
},
行=新列表()
{
新行
{
c=新列表{
新的C{v=“a”},
新的C{v=“b”}
}
}
}
};

如果您从nuGet获得Newtonsoft JSON包,您只需创建所需的任何对象结构,然后使用该库将其编码为JSON字符串。这应该可以让你摆脱所有的猜测和“我对JSON不熟悉”的困扰。你能用输出所需的JSON结构更新你的问题吗?谢谢。这就是我正在使用的-不确定我如何更改字符串的格式,因为默认情况下,它会如上所述对其进行编码。你能给我指出正确的方向吗?正如@YuvalItzchakov所说的,如果你有一个它期望的JSON样本,它会更容易帮助你。