C# 字典JSON格式

C# 字典JSON格式,c#,.net,json,asp.net-mvc-4,C#,.net,Json,Asp.net Mvc 4,我有一个.NET字典,其中包含实体框架中SQL函数的项。以下是我将项目添加到词典的代码: public FooViewModel GetFoo() { var fooresults = new FooResultsViewModel(); using (var db = new DBEntities()) { var results = db.FunctionResults().ToList();

我有一个.NET字典,其中包含实体框架中SQL函数的项。以下是我将项目添加到词典的代码:

    public FooViewModel GetFoo()
    {

        var fooresults = new FooResultsViewModel();

        using (var db = new DBEntities())
        {
            var results = db.FunctionResults().ToList();
            foreach (var d in results)
            {
                foo.a.Add(d.ColumnName, d.ColumnValue);
            }


        }
        return fooresults;
这是我的模型:

public class FooViewModel : GraphViewModel
{
    public FooResultsViewModel() { }
    public Dictionary<string, decimal> a = new Dictionary<string, decimal>();
}
这是返回的JSON:

{"a":
{"FooResult1":3.579831,
"FooResult2":3.359243,
"FooResult3":3.720588,
"FooResult4":3.636554,
"FooResult5":3.285714,
"FooResult6":3.758403,
"FooResult7":3.262605}}
然而,我正在寻找一些回报如下:

{"a":
{ColumnName:"FooResult1", 
ColumnValue:3.579831,
ColumnName:"FooResult2",
ColumnValue:3.359243,
ColumnName:"FooResult3",
ColumnValue:3.720588,
ColumnName:"FooResult4",
ColumnValue:3.636554,
ColumnName:"FooResult5",
ColumnValue:3.285714,
ColumnName:"FooResult6",
ColumnValue:3.758403,
ColumnName:"FooResult7",
ColumnValue:3.262605}}

有没有办法格式化第二个结果的JSON输出?

我想您忘了在每对
列名
列值
之间添加
{
&
}
,并将其序列化为数组

相反,您的JSON无效或不是JSON,因为您多次重复相同的属性名

如果我是对的,这是一个按照您想要的方式构建词典的测试用例:

[TestClass]
public class CustomDictionaryJsonSerialization
{
    [TestMethod]
    public void SerializeDictionary()
    {
        Dictionary<string, object> dict
            = new Dictionary<string, object> {{"col1", 1}, {"col2", "two"}};

        var nameValues = dict.Keys.Select(k =>
            new {ColumnName = k, ColumnValue = dict[k]});

        var toSerialize = new {a = nameValues.ToList()};

        string serialized = JsonConvert.SerializeObject(toSerialize);

        Assert.IsNotNull(serialized);
    }
}

仅供参考,这是一个.NET字典,而不是C#字典。这样的JSON格式有什么用?您是否希望有一个对象数组,如
{ColumnName:“FooResult”,ColumnValue:3.123}
您当前的预期JSON结果无效,因为字段名重复。我希望JSON采用这种格式的原因是我正在使用AJAX调用,然后以可视化方式呈现它。为此,我需要为可视化脚本确定要绘制的值以及要沿轴放置的类别(名称)。我希望这能有所帮助。谢谢你的澄清。我在.NET堆栈上只呆了很短时间。我会记得把它们分开。
[TestClass]
public class CustomDictionaryJsonSerialization
{
    [TestMethod]
    public void SerializeDictionary()
    {
        Dictionary<string, object> dict
            = new Dictionary<string, object> {{"col1", 1}, {"col2", "two"}};

        var nameValues = dict.Keys.Select(k =>
            new {ColumnName = k, ColumnValue = dict[k]});

        var toSerialize = new {a = nameValues.ToList()};

        string serialized = JsonConvert.SerializeObject(toSerialize);

        Assert.IsNotNull(serialized);
    }
}
{"a":
  [ { "ColumnName":"col1", "ColumnValue":1 },
    { "ColumnName":"col2", "ColumnValue":"two" } ]
}