c# - 带有键名的json字典

标签 c# json

我有一本字典Dictionary<int, string>整数和字符串,其中整数是 ID,字符串是用户名,当我将其转换为 JSON 时使用 Json.NET我得到如下内容:

{"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"},
]

这可能吗?

最佳答案

据我所知,您必须将字典转换为 JSON.NET 会识别为 IEnumerable 的内容:

// YOUR DICTIONARY
var dictFriends = new Dictionary<int, string>() {
    {1,"Jack"},
    {2,"John"},
    {3,"Jeff"}
};

// TRANSFORM INTO IENUMERABLE
var transformed = from key in dictFriends.Keys
                  select new { id = key, user = dictFriends[key] };

// SERIALIZE
var json = JsonConvert.SerializeObject(transformed);

输出:

[
{"id":1, "user":"Jack"},
{"id":2, "user":"John"},
{"id":3, "user":"Jeff"}
]

关于c# - 带有键名的json字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41891139/

相关文章:

java - : JSONObject json = new JSONObject(); 处抛出异常

javascript - 访问返回的 JSON 元素

c# - 创建内存消耗应用程序

c# - 用于深度属性比较的表达式生成器

c# - FTP 轮询器偶尔会挂起文件下载,直到重新启动

json - grails spring 安全休息状态 401 重定向到 Controller 的操作以抛出自定义错误消息

c# - 组合的分组算法

c# - TableLayoutPanel 大小调整

javascript - 如何在 HTML 中禁用一种输入类型

javascript - 在 AngularJS 中更新 JSON 文件