【发布时间】:2017-01-27 09:54:28
【问题描述】:
我有一个包含整数和字符串的字典 Dictionary<int, string>,其中整数是 id,字符串是用户名,当我使用 Json.NET 将其转换为 JSON 时,我得到如下内容:
{"3":"jack","2":"john"}
我是这样转换的:
Dictionary<int, string> dictFriends = new Dictionary<int, string>();
foreach (var id in resultList)
{
var user = db.Users.Find(id);
string friend = user.Username;
dictFriends.Add(id, friend);
}
string json = JsonConvert.SerializeObject(dictFriends);
但我希望得到这样的东西:
[
{ "id": "3", "user": "jack"},
{ "id": "2", "user": "john"},
]
有可能吗?
【问题讨论】:
-
你的
dictFriends看起来怎么样 -
在 JSON 中,对象被序列化为字典。如果您希望将值序列化为对象的属性,请使用对象列表,而不是字典。例如,
resultList.Select(new {id=id,user=friend); -
您使用的是哪个 ORM?您可以修改您的查询,使其仅返回一个对象列表,其中仅包含可以直接序列化的 ID、Name 属性。在 EF 中,您可以将整个代码更改为
db.Users.Where(u=>resultList.Contains(u=>u.ID)).Select(u=>new {id=u.ID, user=u.UserName});。 LINQ to NH 可以使用完全相同的查询。