处理从web服务器接收的json的优雅方式

本文关键字:json 方式 web 服务器 处理 | 更新日期: 2023-09-27 18:03:57

在c#中处理从web服务器接收的json更好的方法是什么?

是否可以直接传递System.Json.JsonValue对象到响应处理程序?

new FooWebService().FetchSomethingAsync(12, "bar", json =>
    {
        DoSomething1(ConvertJsonToClass1(json["key1"]));
        DoSomething2(ConvertJsonToClass2(json["key2"]));
    });

或者我需要用json实现一些"响应"接口包装JsonValue ?

interface IResponse
{ ... }
class JsonResponse : IResponse
{ ... }
new FooWebService().FetchSomethingAsync(12, "bar", response =>
    {
        DoSomething1(ConvertResponseToClass1(response["key1"]));
        DoSomething2(ConvertResponseToClass2(response["key2"]));
    });

或者将json转换为众所周知的对象,然后将其传递给处理程序?

interface IResponseConverter
{ ... }
class JsonConverter : IResponseConverter
{ ... }
var service = new FooWebService() 
{
    ResponseConverter = new JsonConverter()
};
service.FetchSomethingAsync(12, "bar", response =>
    {
        DoSomething1(response.Key1);
        DoSomething2(response.Key2);
    });

处理从web服务器接收的json的优雅方式

这一方面取决于你想要有多大的灵活性,另一方面取决于你需要多少时间来实现一个完整的解决方案。

如果时间有限,我建议坚持使用更灵活的解决方案,分别使用IResponseIResponseConverter的职责和关注点。

如果时间有限,我建议坚持使用IResponseConverter,这样您就可以轻松地添加对新数据格式的支持。

MVC有System.Web.Mvc.JsonResult,值得一看

你考虑过使用动态类型吗?这里有一个很好的总结,和我用过的一个技巧非常相似:http://www.drowningintechnicaldebt.com/shawnweisfeld/archive/2010/08/22/using - c - 4.0 -和-动态- - - - - - -解析- json.aspx