我需要返回一个JSON对象数组,这是SQL查询的结果。 SQL查询可以是任何东西,所以我需要在代码中动态创建属性名称和值。
例如,"从员工中选择first_name,last_name"我想回来:
{ "data":
[{
"first_name": "dave",
"last_name": "thielen"
},
{
"first_name": "john",
"last_name": "smith"
}]
}
但是下一个查询可能是"从订单中选择项目,价格,税,ship_date并希望返回:
{ "data":
[{
"item": "HD TV",
"price": "598.95"
"tax": "59.89"
"ship_date": "2013-08-26"
},
{
"item": "Cables",
"price": "54.67"
"tax": "5.47"
"ship_date": "2013-08-26"
}]
}
如何在C#中构建它,然后转换为JSON?
谢谢 - 戴夫
答案 0 :(得分:7)
使用匿名类型,例如前(使用Json.Net),
var json = JsonConvert.SerializeObject(
new {
data = new[]{
new{name="a",surname="b"},
new{name="c",surname="d"},
}
}
);
会给出
{"data":[{"name":"a","surname":"b"},{"name":"c","surname":"d"}]}
修改强>
我需要“a”:“b”
var json = JsonConvert.SerializeObject(
new Dictionary<string, string>() {
{ "a","b" }
}
);
输出:{"a":"b"}
<强> EDIT2 强>
一个有趣的人
var dict = new Dictionary<string, string>() {
{ "a","b" },
{ "c","d" }
};
var json = JsonConvert.SerializeObject(
new { data = dict.Select(x => new[]{x}.ToDictionary(kv => kv.Key, kv => kv.Value)) }
);
输出:{"data":[{"a":"b"},{"c":"d"}]}
答案 1 :(得分:0)
我的建议是查看Json.NET
还有其他几个库,但我认为这是最常用的。它有一个简单的序列化/反序列化API。