微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

格式化的Json中的C#MVC返回列表

如何解决格式化的Json中的C#MVC返回列表

一个列表,该列表以Json返回,但要按照以下格式设置。无法弄清楚我的一生,为什么我似乎无法正确设置其格式。

[{
    "AppFormName": "TFB Test Application","Questions": [{
        "QuestionName": "How old are you?","QuestionType": 1
    },{
        "QuestionName": "Where are you from?","QuestionType": 1
    }]
},{
    "AppFormName": "HLL",{
        "QuestionName": "What Game are you applying for?","QuestionType": 2
    },{
        "QuestionName": "Do you agree to the clan rules","QuestionType": 3
    }]
}]

这是我的代码当前生成的:

[
    {
        "AppFormName": "TFB Test Application","QuestionName": "How old are you?",{
        "AppFormName": "TFB Test Application","QuestionName": "Where are you from?",{
        "AppFormName": "HLL","QuestionName": "What Game are you applying for?","QuestionName": "Do you agree to the clan rules","QuestionType": 3
    }
]

这是我要在其中序列化结果的控制器;

public ActionResult Accesstoken(string authorizationCode)
{
    UserFunctions.Accesstoken(authorizationCode);
    var results = UserFunctions.userApplications;

    return Json(results,JsonRequestBehavior.AllowGet);
}

型号:

public class UserApplications
{
    public string AppFormName { get; set; }
    public string QuestionName { get; set; }
    public int QuestionType { get; set; }
}

获取数据的功能

   public static List<Models.UserApplications> GetUserApplications(string ClientId)
    {
        userApplications.Clear();

        var getUserApplications = getUserApplicationssql;

        using (var conn = new MysqLConnection(dataConn))
        {
            using (var cmd = new MysqLCommand(getUserApplications,conn))
            {
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.AddWithValue("@discordClientID",ClientId);
                cmd.Connection.open();
                using (var dr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                {
                    while (dr.Read())
                    {
                        var u = new Models.UserApplications
                        {
                            AppFormName = dr["AppFormName"].ToString(),QuestionName = dr["QuestionName"].ToString(),QuestionType = dr.GetInt32(dr.Getordinal("TypeID")),};
                        userApplications.Add(u);
                    }
                }
            }
        }

        return userApplications;
    }

解决方法

您需要代码将现有数据结构转换为将生成所需JSON结构的代码。使用Linq可以相对轻松地完成此操作。然后您需要在操作方法中返回该列表:

public ActionResult AccessToken(string authorizationCode)
{
    UserFunctions.AccessToken(authorizationCode);
    var results = UserFunctions.userApplications;

    var appFormList = results.GroupBy(s => s.AppFormName).Select(g => new
    {
      AppFormName = g.Key,Questions = g.Select(a => new
      {
        a.QuestionName,a.QuestionType
      })
    });

    return Json(appFormList,JsonRequestBehavior.AllowGet);
}

实时演示:https://dotnetfiddle.net/sRIy72

(使用Linq的想法要记入this post。)

,

这可以简单地通过分组来实现:

<a href="[acf field="url"]>BUTTON</a>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。