webapi 后取值 返回json_webapi 返回json - CSDN
精华内容
参与话题
  • 今天在做ajax调用webapi接口的时候,用的是fidder调试的。能看到返回的数据是xml,类似于json格式,用alert(data),始终都是object类型的。但是在读取值的时候,始终不知道该如何取值,试了N种方式取值还是取不到。...

    今天在做ajax调用webapi接口的时候,用的是fidder调试的。能看到返回的数据是xml,类似于json格式,用alert(data),始终都是object类型的。但是在读取值的时候,始终不知道该如何取值,试了N种方式取值还是取不到。最后用了json对象转json字符串:alert(JSON.stringify(data));直接可以看到json字符串了,就一下明白该如何取值了。

    展开全文
  • C# 请求Web Api 接口,返回json数据直接反序列化为实体类

    需要的引用的dll类:

    Newtonsoft.Json.dll、System.Net.Http.dll、System.Net.Http.Formatting.dll



    Web Api接口为GET形式:

     public static CstyleCmappListRespDTO GetCstyleCmappList(string cstylename, string cmappgname)
            {
                CstyleCmappListRespDTO RespDTO = new CstyleCmappListRespDTO();
                var url = string.Empty;
                try
                {
                    url = RequestUrl + "/dw/get_cstylecmappg_info_dw?id={0}&key={1}×tamp={2}&cstylename={3}&cmappgname={4}";
                    url = string.Format(url, id, key, DateTime.Now.ToString("yyyyMMddHHmmss"), cstylename, cmappgname);
                    var httpClient = new HttpClient();
                    HttpResponseMessage response = httpClient.GetAsync(new Uri(url)).Result;
                    RespDTO = response.Content.ReadAsAsync<CstyleCmappListRespDTO>().Result;
                }
                catch (Exception ex)
                {
                    
                }
                return RespDTO;
            }

    Web Api接口为POST形式:

    public static FlightsResponse QueryFlightPost(FlightQueryRequest ReqDTO)
            {
                FlightsResponse FlightsRespDTO = new FlightsResponse();
                try
                {
                    string requestDTO = JsonConvert.SerializeObject(ReqDTO);
                    MediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter();
                    HttpContent httpContent = new ObjectContent<FlightQueryRequest>(ReqDTO, jsonFormatter);
                    var url = RequestUrl + "/QueryFlight";
                    var httpClient = new HttpClient(new RequestHandler() { InnerHandler = new HttpClientHandler() });
                    httpClient.Timeout = TimeSpan.FromMinutes(3);
                    var responseJson = httpClient.PostAsync(url, httpContent).Result;
                    FlightsRespDTO = responseJson.Content.ReadAsAsync<FlightsResponse>().Result;
                    
                }
                catch (Exception)
                {
                    FlightsRespDTO = new FlightsResponse();
                }
                return FlightsRespDTO;
            }







    展开全文
  • 8种提升ASP.NET Web API性能的方法

    千次阅读 2016-04-09 15:26:36
    Web API performance  ASP.NET Web API 是非常棒的技术。编写 Web API 十分容易,以致于很多开发者没有在应用程序结构设计上花时间来获得很好的执行性能。  在本文中,我将介绍 8 项提高 ASP.NET Web API ...

    英文原文:8 ways to improve ASP.NET Web API performance

      ASP.NET Web API 是非常棒的技术。编写 Web API 十分容易,以致于很多开发者没有在应用程序结构设计上花时间来获得很好的执行性能。

      在本文中,我将介绍 8 项提高 ASP.NET Web API 性能的技术。

      1、使用最快的 JSON 序列化工具

      JSON 的序列化对整个 ASP.NET Web API 的性能有着关键性的影响。 在我的一个项目里,我从 JSON.NET 序列化工具转到了 ServiceStack.Text 有一年半了。

      我测量过,Web API 的性能提升了 20% 左右。 我强烈建议你去尝试一下这个序列化工具。这里有一些最近的流行序列化工具性能的比较数据。

    SerializerPerformanceGraf

      来源: theburningmonk

      更新: 似乎 It seams that StackOverflow 使用了他们号称迄今为止最快的 JSON 序列化工具 Jil。 一测试数据可参见他们的 GitHub page Jil serializer.

      2、从 DataReader 中手动串行化 JSON

      我已经在我的项目中使用过这种方法,并获得了在性能上的福利。

      你可以手动地从 DataReader 创建 JSON 字符串并避免不必要的对象创建,这样你就不用从 DataReader 中取值并写入对象,再从这些对象中取值并使用 JSON Serializer 产生 JSON.

      使用 StringBuilder 产生 JSON,并在结尾处返回 StringContent 作为在 WebAPI 中响应的内容。

    var response = Request.CreateResponse (HttpStatusCode.OK);
    response.Content = new StringContent (jsonResult, Encoding.UTF8, "application/json");
    return response;

      你可以在 Rick Strahl’s blog 查看更多方法。

      3、尽可能使用其它协议格式 (protocol buffer, message pack)

      如果你能给在你的工程中使用其它消息格式,如 Protocol Buffers 或 MessagePack   而不是使用 JSON 这种协议格式。

      你将能给获取到巨大的性能优势,不仅是因为 Protocol Buffers 的序列化是非常快,而且比 JSON 在返回的结果格式化要更快。

      4、实现压缩

      在你的 ASP.NET Web API 中使用 GZIP 或 Deflate 。

      对于减少响应包的大小和响应速度,压缩是一种简单而有效的方式。

      这是一个非常有必要使用的功能,你可以查看更多关于压缩的文章在我的博客 ASP.NET Web API GZip compression ActionFilter with 8 lines of code.

      5、使用 caching

      在 Web API 方法中使用 output caching 意义深远.举例来说,如果大量用户访问同一个一天只改变一次的响应(response)内容。

      如果你想实现手动缓存,例如把用户口令缓存到内存,请参看我的博文 Simple way to implement caching in ASP.NET Web API.

      6、尽可能地使用典型的 ADO.NET

    ORMMapper

      7、在 Web API 中实现异步方法

      使用异步的 Web API 服务大幅增加 Web API 对于 Http 请求的处理数量。

      实现是简单的,只需使用 async  的关键字和将你方法的返回值类型改为 Task 即可。

    [HttpGet]  
    public async Task OperationAsync ()  
    {   
        await Task.Delay (2000);  
    }

      8、返回多个结果集和集合的组合

      减少传输的次数不仅多数据库有好处,对于 Web API 同样 ,你才有可能使用结果集的功能。

      也就是说你可以从DataReader去提取多个结果集参见以下演示代码:

    // read the first resultset  var reader = command.ExecuteReader (); 
      
    // read the data from that resultset  while (reader.Read ()) 
    { 
        suppliers.Add (PopulateSupplierFromIDataReader ( reader )); 
    } 
      
    // read the next resultset  reader.NextResult (); 
      
    // read the data from that second resultset  while (reader.Read ()) 
    { 
        products.Add (PopulateProductFromIDataReader ( reader )); 
    }

      你可以在一个 Web API 的一次响应中返回多个对象,试着将你的返回的多个对象进行组合后返回如下:

    public class AggregateResult
    {
         public long MaxId { get; set; }
         public List<Folder> Folders{ get; set; }
         public List<User> Users{ get; set; }
    }

      这种方式将减少对你的 WEB API 的 HTTP 请求。

    展开全文
  • 可同时参见这篇文章 asp.net webapijson传值方式 纠缠了我几天的一个问题,简单摘抄整理下,希望对大家有帮助。 网络上大量使用json格式传递数据,json传递数据比较轻量,而用json传递数据就要解决两个问题: 1...

    可同时参见这篇文章  asp.net webapi下json传值方式

    纠缠了我几天的一个问题,简单摘抄整理下,希望对大家有帮助。

    网络上大量使用json格式传递数据,json传递数据比较轻量,而用json传递数据就要解决两个问题:
    1、从服务器回发回来的json格式的字符串该如何处理;
    2、如何将json数据提交到服务器并在服务器端解析json数据

    范例一:

    (asp.net mvc3.0代码,传递简单几个参数数值,后台使用的mvc的model binding方式获取值)

     

     

     

    范例二:

    (asp.net mvc 4.0下web api,使用了knockout.js 2.0的代码,传递参数为一个类,viewmodel。 使用的webapi 下的formatters传值方式,后台是从request的body中取值,并且是把整个body作为一个(不可为多个)对象解析为一个参数,故后台需定义一个对于的类结构来匹配前台的传来的复杂数据 类型 )

     

     

    范例三:

    (asp.net mvc 4.0下web api,使用了knockout.js 2.0的代码,传递参数为一个包含数组的自定义类型,使用的webapi 下的formatters传值方式 )

    范例四:

    (asp.net mvc 4.0下普通controller判断ajax请求,传递参数为一个拼接的json字符串,使用的webapi 下的formatters传值方式 )

     

    1)借助JSON.stringify函数将js对象转成json字符串格式

    var bookInfo = new Array();

    for (var i in self.dates()) {
    var bi = {};
    bi["datesNum"] = self.dates()[i].date;
    bi["totalPrice"] = self.dates()[i].date;
    bi["stylistId"] = self.dates()[i].date;
    bookInfo.push(bi);
    }
    var book = {
    book: bookInfo,
    name:"11",
    };

    var bookString=JSON.stringify(book);

    2)拼接json字符串

    //此类用来反序列化客户端json字符串

     

     

    json简单介绍

    1、JSON简介及其应用场景

           JSON协议是一种数据传输协议,你也可以把它理解为表达数据协议,JSON与XML不同,JSON只能用来传输数据,而不能用作文档格式。

        JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。本文将快速讲解 JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行 JSON 格式数据的处理。

         尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有优势,许多 AJAX 应用甚至直接返回 HTML 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。

         现在, JSON 为 Web 应用开发者提供了另一种数据交换格式。让我们来看看 JSON 到底是什么,同 XML 或HTML 片段相比,JSON 提供了更好的简单性和灵活性。

    2、JSON语法

    和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的 Object 对象。

    String,Number 和 Boolean 用 JSON 表示非常简单。例如,用 JSON 表示一个简单的 String “ abc ”,其格式为:

    "abc"

    除了字符 ",\,/ 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他 Unicode 字符可以直接输出。

    Boolean 类型表示为 true 或 false 。此外,JavaScript 中的 null 被表示为 null,注意,true、false 和 null 都没有双引号,否则将被视为一个 String 。

    JSON 还可以表示一个数组对象,使用 [] 包含所有元素,每个元素用逗号分隔,元素可以是任意的 Value,例如,以下数组包含了一个 String,Number,Boolean 和一个 null:

    ["abc",12345,false,null]

     Object 对象在 JSON 中是用 {} 包含一系列无序的 Key-Value 键值对表示的,实际上此处的 Object 相当于 Java 中的 Map<String, Object>,而不是 Java 的 Class 。注意 Key 只能用 String 表示。

    例如,一个 Address 对象包含如下 Key-Value:

    city:Beijing

     street:Chaoyang Road

     postcode:100025(整数)

     用 JSON 表示如下:

    {"city":"Beijing","street":" Chaoyang Road ","postcode":100025}

     其中 Value 也可以是另一个 Object 或者数组,因此,复杂的 Object 可以嵌套表示,例如,一个 Person 对象包含name 和 address 对象,可以表示如下:

    {"name":"Michael","address":

        {"city":"Beijing","street":" Chaoyang Road ","postcode":100025}

    }

     

    json格式的常见问题

    1)Jquery.ajax不能解析json对象,报Invalid JSON错误的原因和解决方法

     我们知道Invalid JSON错误导致的json对象不能解析,一般都是服务器返回的json字符串的语法有错误。这种情况下,我们只需要仔细的检查一下json就可以解决问题。

    下面说一下,最近在使用jquery 1.4中使用$.ajax()方法解析json对象遇到的问题。

     Json对象是:

     [{name:'二手房出售',infoCount:0,pageUrl:'/ershoufang'},{name:'二手房求购',infoCount:0,pageUrl:'/qiugou'},{name:'二手房装修',infoCount:0,pageUrl:'/esfzhuangxiu'},{name:'二手回收',infoCount:0,pageUrl:'/huishou'},{name:'二手摩托车',infoCount:0,pageUrl:'/motor'},{name:'二手汽车求购',infoCount:0,pageUrl:'/ershoucheqg'},{name:'二手汽车转让',infoCount:9,pageUrl:'/ershouche'},{name:'二手市场',infoCount:0,pageUrl:'/ershoushichang'}]

     不知道大家有没有发现这段json对象的问题。这样的写法在js脚本和jquery 1.4之前的版本都是没有问题的。因为在1.3及更早版本中,jQuery通过javascript的eval方法来解析json对象。在1.4中,jQuery使用了更严格的方法来解析json。所有的内容都必须使用双引号。

     这点从jQuery.parseJSON(json) 可以看出,parseJSON在文档中的解释是:

    接受一个JSON字符串,返回解析后的对象。

    传入一个畸形的JSON字符串会抛出一个异常。比如下面的都是畸形的JSON字符串: 
    {test: 1} ( test 没有包围双引号)
    {'test': 1} (使用了单引号而不是双引号)

    另外,如果你什么都不传入,或者一个空字符串、null或undefined,parseJSON都会返回 null 。

    凡是字符串都需要用双引号扩起来,数字,null,true,false不用而已

    来自 http://www.cnblogs.com/hyl8218/archive/2010/03/26/1694082.html

     2)传入的对象无效,应为“:”或“}”。

    还是传入的json字符串格式有问题,特殊字符如“引号需编码。

    .NET后台获取前台JQUERY AJAX传递JSON数组的问题 

    页面脚本:
    var people = [{ "UserName": "t1", "PassWord": "111111", "Sex": "男" }, { "UserName": "t2", "PassWord": "222222", "Sex": "女"}];

    我想把这个前端拼凑的JSON脚本发送后HANDLER后台。
    $("#btnSend").bind("click", function() {
      $.post("a.ashx", people, function(data, returnstatus) { }, "json");
      });

    后台应该如何接受啊,平时一般形式 都是CONTENT.Request【“参数”】 接受,但这个是JSON数组 如何接受呢?

    方案一:
    去www.json.org下载JSON2.js
    再调用JSON.stringify(JSONData)将JSON对象转化为JSON串。
    var people = [{ "UserName": "t1", "PassWord": "111111", "Sex": "男" }, { "UserName": "t2", "PassWord": "222222", "Sex": "女"}];

    再构造URL回传给服务器端:
    $("#btnSend").bind("click", function() {
      $.post("a.ashx", {xxxx:JSON.stringify(people)}, function(data, returnstatus) { }, "json");
      });

    服务器端解析传回的json字符串(注意格式问题

    服务器如何解析传回来的json数据?

    引用一段描述:

    Asp.net webapi Differences with MVC

    Here are some differences between MVC and WebAPI’s parameter binding:

    1. MVC only had model binders and no formatters. That’s because MVC would model bind over the request’s body (which it commonly expected to just be FormUrl encoded), whereas WebAPI uses a serializer over the request’s body.
    2. MVC buffered the request body, and so could easily feed it into model binding. WebAPI does not buffer the request body, and so does not model bind against the request body by default.
    3. WebAPI’s binding can be determined entirely statically based off the action signature types. For example, in WebAPI, you know statically whether a parameter will bind against the body or the query string. Whereas in MVC, the model binding system would search both body and query string.

     

    rc版的webapi参数绑定器分为两种:

     

    1.Model Binding
    2.Formatters 
    其中Model Binding仅从url中取值,这点是与mvc的model binding有区别的,formatters是从request的body中取值,并且是把整个body作为一个(不可为多个)对象解析为一个参数,后台需相对应的为前台传递的复杂类型定义一个对应的类。而mvc下的model binding系统会同时查询body和querystring下的数据并匹配。

     

    webapi是如何从这两种方式选择呢?

     

    1.默认情况下是根据参数的类型,如果参数为简单类型(字符串、整数、浮点、时间类型等),则使用model binding,如果是复杂类型(自定义的类,包括一个或多个字段)等,则用formatters

     

    2.可以给参数加上[FromBody]属性,则使用formatters

     

    3.可以给参数加上[ModelBinder]属性,则使用model binding,而且可以此属性允许你指定用自定义的绑定器,也可以使用[FromUri]属性来使用model binding

     

    4.特别注意一点,一个action上,只能有一个参数使用formatters,否则会在运行时抛出异常

     

    JSON.stringify 功能

     参见 http://technet.microsoft.com/zh-cn/sysinternals/cc836459(v=vs.94)

    序列化一个JavaScript 值对 JavaScript 对象表示法 (json) 文本。

    JSON.stringify(value [, replacer] [, space])

    JSON.parse 功能

    参加 http://technet.microsoft.com/zh-cn/sysinternals/cc836466(v=vs.94)

    将 JavaScript 对象生成JavaScript 值的表示法 (json) 文本。

    JSON.parse(text [, reviver])

     

    最后补充一个完整的json数据传递实例

    jquery ajax json传递数据浅析(注:使用的mvc下的model binding方式)

    来自 http://www.aichengxu.com/article/Javascript/664_7.html


    展开全文
  • 6种提升ASP.NET Web API性能的方法

    千次阅读 2014-08-12 17:52:54
    6种提升ASP.NET Web API性能的方法 ASP.NET Web API 是非常棒的技术。编写 Web API 十分容易,以致于很多开发者没有在应用程序结构设计上花时间来获得很好的执行性能。  在本文中,我将介绍8项提高 ASP.NET Web ...
  • 有时,我们需要调用外部Web系统API,获取返回数据,数据类型为JsonResult。 如调用微信公众号API推送功能,返回推送结果。 推送结果: { success = False, returnData = {"errcode":40003,"errmsg":"invalid openid...
  • JObject job = (JObject)JsonConvert.DeserializeObject(strBuff); foreach (var item in job["subjects"]) { subjects subj = new subjects(); rating rat = new rati
  • [c#] LitJson使用中的一些问题

    万次阅读 2015-04-15 15:09:09
    [c#] LitJson使用中的一些问题使用C#做Untiy开发时,有解析Json的需求,选择使用了LitJson这个库,因为之前我们是使用lua的,这个库会将Json解析保存为JsonData,这个JsonData和lua的table使用上有点类似,但有些...
  • 【图灵机器人】图灵机器人API V2版使用采坑指南

    万次阅读 热门讨论 2019-10-11 00:48:05
    本文只记录接入API时候的一些简单坑,更多使用技巧没有说到。 介绍 图灵机器人是以语义技术为核心驱动力的人工智能公司(一大堆内容可百度。),简单来说就是一个优秀的智能机器人接口,可以实现的功能有:中文...
  • webapi获取数据库数据转换成json格式

    千次阅读 2019-03-26 11:54:22
    webapi的controller中:(js调用该controller,然后返回数据给Js处理) public string getztreenode() { try { SqlConnection sqlConnection = new SqlConnect...
  • 一般来说web开发中,前台采用json数据提交给后台,后台处理数据以后返回json数据给前台,前台解析json,显示数据。 总而言之,前后台直接交换的数据格式最常用的非json数据无疑了。 这里就总结一些json数据的前...
  • WebApi接口传参不再困惑:传参详解

    万次阅读 多人点赞 2016-05-03 18:48:45
    一、get请求 对于取数据,我们使用最多的应该就是get请求了吧。下面通过几个示例看看我们的get请求参数传递。 1、基础类型参数 ...public string GetAllChargingData(int id, string name) ... return "ChargingData" +...
  • @Produces注解

    万次阅读 2017-11-07 22:23:03
    《Java RESTful Web Service实战(第2版)》第2章REST API设计,本章是REST理论和Jersey实践的核心章节,详细讲述了HTTP方法与REST API的统一接口设计、URI的REST风格设计,并逐个讲述了JAX-RS2定义的注解如何支持...
  • 终于知道怎么在c#后台发post请求了

    万次阅读 2018-06-20 16:32:05
    C#进阶系列——WebApi 接口参数不再困惑:传参详解阅读目录一、get请求1、基础类型参数2、实体作为参数3、数组作为参数4、“怪异”的get请求二、post请求1、基础类型参数2、实体作为参数3、数组作为参数4、后台发送...
  • Asp.net WebAPI 构建后台数据接口

    千次阅读 2017-07-10 15:33:50
    选择WebApi,并使用空模板(这里不想要一些其他的mvc的东西)3.新建一个model4.写几个属性using System; using System.Collections.Generic; using System.Linq; using System.Web;namespace APITest.Models { ...
  • 后端 API 重要的是语义准确而非前端使用方便。null、空对象、空字符串的语义是不一样的,牟然转换容易丢失语义,引发后续维护的困难。我在此基础上补充点更贴近现实的内容。 如果不允许有 null,我建议 API 直接返回...
  • Unity3D 网络通信_HTTP协议、处理Json格式返回值、请求加Oauth
  • 前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料。如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路。本篇针对初初使用...
  • chrome扩展:manifest.json文件详解

    万次阅读 2018-07-07 16:38:49
    manifest.json是扩展的配置文件,指明了扩展的各种信息。一个manifest.json格式如下:{ // 必须的字段3个 "name": "MyExtension", // 扩展名称 "version": "1.0", // ...
  • 百度api就是基于百度地图的开发接口,这么大的地图公司居然给开发接口真的很感激哎! 所以,言归正传。现在项目需求要把乌鲁木齐市内的所有清真寺都用矢量圈出来,然后做点统计啥的,最后做个专题图产品。 怎么把...
1 2 3 4 5 ... 20
收藏数 8,655
精华内容 3,462
关键字:

webapi 后取值 返回json