在Ok()函数.NET WebAPI上自定义JSON serilization

时间:2017-02-09 10:59:29

标签: c# json string http asp.net-web-api

我有一个C#.NET WebAPI项目,我的所有API都是以下形式:

[HttpGet]
public IHttpActionResult Get()
{
   var myComplexObject = BuildResponse();

   return Ok(myComplexObject);
}

Ok()函数当前负责将响应对象序列化为JSON字符串。如何告诉框架使用自定义JSON序列化程序而不是默认序列化程序?

2 个答案:

答案 0 :(得分:1)

如果要对所有请求使用自定义序列化程序,请在WebApiConfig.cs中配置CalcObservable

public partial class MainWindow : Window, INotifyPropertyChanged
{
    public MainWindow()
    {
        DataContext = this;
        InitializeComponent();

        CalcObservable = DatabaseQueries.ShiftInputSourceObserv(SelectedEmployee.Key, DateFilter);
        MyDataGrid.SetBinding(ComboBox.ItemsSourceProperty, new Binding(nameof(CalcObservable)) { Source = this });
    }

    private ObservableCollection<CalcTable> _calcObservable = new ObservableCollection<CalcTable>();
    public ObservableCollection<CalcTable> CalcObservable
    {
        get { return _calcObservable; }
        set { _calcObservable = value; OnPropertyChanged(nameof(CalcObservable)); }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged(string name)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(name));
    }
}

这是一篇关于如何制作自己的选择剂的文章

Using an alternate JSON Serializer in ASP.NET Web API

答案 1 :(得分:0)

通过调用OK()方法返回的实例,可以创建新的OkNegotiatedContentResult。从那里你放了你的JsonSerializerSettings。

实际上,当您调用OK(T内容)方法时,它将帮助您创建新的OkNegotiatedContentResult对象。它会将你的响应对象包装在那里。所以你可以直接。 希望它有所帮助。