在控制器中以JSON格式获取数据

时间:2017-10-21 17:10:31

标签: c# json

我有这个Ajax:

$.ajax({
        url: "/api/Values",
        dataType: "json",
        type: "POST",
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify({
            Id: "1", Name: "Name1", Family: "Family1"
        }),

不,我想在控制器中获取data,以便我可以将其保存到带有log4net的文本文件中。目前我已经写了这段代码:

public void PostValues(Class1 cs)
    {
        var data = $"Id = {cs.Id}, Name = {cs.Name}, Family = {cs.Family}";
        Log.Debug($"POST Request, value = {data}");
    }

使用模型绑定,我可以获得绑定到上面类属性的数据,然后像上面一样组合它们。但我不想这样使用,因为我必须经历所有类属性。有没有办法将数据作为JSON发布到控制器?我确信这应该是一种在控制器中获取以下行的方法:

Id: "1", Name: "Name1", Family: "Family1"

2 个答案:

答案 0 :(得分:2)

您可以使用序列化程序将对象序列化为字符串版本。以下是JSON.NET

的使用方法
public void Post(Class1 value)
{
    var stringVersion = Newtonsoft.Json.JsonConvert.SerializeObject(value);
    // use stringVersion  now.
}

另一种选择是覆盖您班级中的ToString()并根据需要使用它。您可以在ToString()

返回的字符串中包含相关的属性值
public class MyClass
{
    public int Id { set; get; }
    public string Name { set; get; }
    public string Family{ set; get; }

    public override String ToString()
    {
        return $"Id:{Id},Name:{Name}";
    }
}

现在,您只需在MyClass对象上调用ToString()即可。

public void Post(MyClass value)
{
    if(value!=null)
    {
       var stringVersion = value.ToString();
    } 
}

答案 1 :(得分:0)

您可以使用JavaScriptSerializer将类对象序列化为json对象,就像这样

 var json = new JavaScriptSerializer().Serialize(cs);