【问题标题】:Output a Tuple<string,string> List as a JSON object将 Tuple<string,string> 列表输出为 JSON 对象
【发布时间】:2014-03-25 14:55:16
【问题描述】:

我应该在 JSON 中列出一个设置列表,我从数据库中获取并存储在 Tuple&lt;string, string&gt; 中。

我可以打印它,但它没有按应有的方式显示:

[{
    "Item1": "setting1Name",
    "Item2": "setting1Value"
 }, {
    "Item1": "testt",
    "Item2": "testt"
 }, {...
 }]

输出应该是:

[
  {"setting1Name":"setting1Value"},
  {"setting2Name":"setting2Value"},{...}
]

如何将元组序列化为 JSON?

控制器:

[GET("Settings")]
public async Task<ActionResult> Settings(string userKey)
{             
    if ((await UserManager.FindByIdAsync(userKey)) == null)
        return new HttpUnauthorizedResult();                        

    List<Tuple<string, string>> settings = new List<Tuple<string, string>>();

    var userSettings = settingRepository.Get(new Guid(userKey));

    for (int i = 0; i < userSettings.Count; i++)
    {
        var tuple = Tuple.Create<string, string>(
            userSettings[i].Name.ToString(),
            userSettings[i].Value.ToString()
            );
        settings.Add(tuple);                
    }                      
        return Json(settings,JsonRequestBehavior.AllowGet);
}

数据库存储方法:

public List<Setting> Get(Guid userId)
{
    return _context.Settings.Where(s => s.UserId == userId).ToList();
}

【问题讨论】:

  • 你能告诉我们你的看法吗?我认为你想更深一层,使用循环。
  • 这是一个 API,我们暂时不使用视图,我正在使用 Rest Console 进行测试
  • 是因为Tuple的序列化方式,检查这个:stackoverflow.com/questions/16101115/…
  • 看看这个,它可能会有所帮助:forums.asp.net/t/…
  • 好吧,不得不说我没完全看懂。。我今晚再看一遍,稍作休息,可能会容易些。但无论如何,谢谢你

标签: c# .net asp.net-mvc json


【解决方案1】:

你可以玩这样的东西

替换这一行

return Json(settings,JsonRequestBehavior.AllowGet);

var dict = new Dictionary<string, string>();
settings.ForEach(a => dict.Add(a.Item1, a.Item2));           
return Json(new List<Dictionary<string, string>>{dict}, 
       JsonRequestBehavior.AllowGet);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 2017-12-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多