首页 > 解决方案 > 如何使用 C# 从控制器反转 JSON.Stringify

问题描述

我将表单数据作为JSON.Stringify($("ourForm").serializeArray())发送(我找不到任何其他方式将表单发送到控制器)

那么如何使用 c# 在控制器端反转这个 Stringify 呢?

字符串是这样的(视图中有 2 个问题模块):

"[{\"name\":\"question_string\",\"value\":\"\"},{\"name\":\"A\",\"value\":\"\" },{\"名称\":\"B\",\"值\":\"\"},{\"名称\":\"C\",\"值\":\"\" },{\"名称\":\"D\",\"值\":\"\"},{\"名称\":\"E\",\"值\":\"\" },{\"name\":\"correct_answer\",\"value\":\"\"},{\"name\":\"question_string\",\"value\":\"\" },{\"名称\":\"A\",\"值\":\"\"},{\"名称\":\"B\",\"值\":\"\" },{\"名称\":\"C\",\"值\":\"\"},{\"名称\":\"D\",\"value\":\"\"},{\"name\":\"E\",\"value\":\"\"},{\"name\": \"correct_answer\",\"值\":\"\"}]"

视图模型:

public class Questions
{        
    [Display(Name ="QUESTION HERE")]
    public string question_string { get; set; }
    public string A { get; set; }
    public string B { get; set; }
    public string C { get; set; }
    public string D { get; set; }
    public string E { get; set; }
    [Display(Name ="CORRECT ANSWER")]
    public string correct_answer { get; set; }
}

标签: c#jqueryasp.net

解决方案


这可以通过Newtonsoft.Json. 创建一个POCO反序列化为最简单的方法(尽管如果需要,使用该dynamic类型进行反序列化可能会很棘手)。

[此处示例]

using System;
using System.Collections.Generic;
using Newtonsoft.Json;

// Create model we can deserialize to
public class FormData
{
    public string Name { get; set; }
    public string Value { get; set; }

    public FormData(string name, string val)
    {
        Name = name;
        Value = val;
    }
}

public class Program
{
    public static void Main()
    {
        var formData = "[{\"name\":\"question_string\",\"value\":\"\"},{\"name\":\"A\",\"value\":\"\"},{\"name\":\"B\",\"value\":\"\"},{\"name\":\"C\",\"value\":\"\"},{\"name\":\"D\",\"value\":\"\"},{\"name\":\"E\",\"value\":\"\"},{\"name\":\"correct_answer\",\"value\":\"\"},{\"name\":\"question_string\",\"value\":\"\"},{\"name\":\"A\",\"value\":\"\"},{\"name\":\"B\",\"value\":\"\"},{\"name\":\"C\",\"value\":\"\"},{\"name\":\"D\",\"value\":\"\"},{\"name\":\"E\",\"value\":\"\"},{\"name\":\"correct_answer\",\"value\":\"\"}]";

        var results = JsonConvert.DeserializeObject<List<FormData>>(formData);

        foreach (var datas in results)
        {
            Console.WriteLine(datas.Name);
        }
    }
}

/* OUTPUT:
question_string
A
B
C
D
E
correct_answer
question_string
A
B
C
D
E
correct_answer
*/

推荐阅读