精华内容
下载资源
问答
  • 根据api获取json数据

    2020-08-12 17:56:04
    根据API获取json数据直接看代码 直接看代码 final String CONTENT_TYPE_TEXT_JSON = "text/json"; HttpClient client = HttpClientBuilder.create().build(); String url = "url"; String js = "{\"id\":\" " + ...

    根据API获取json数据

    直接看代码

    final String CONTENT_TYPE_TEXT_JSON = "text/json";
            HttpClient client = HttpClientBuilder.create().build();
    
            String url = "url";
            String js = "{\"id\":\" " + id + " \"}";
    
            HttpPost httpPost = new HttpPost(url);
            //header的设置需要看文档需求
            httpPost.setHeader("");
            //如果是写入json条件需要写,Content-Type
            httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
    
    		//由于StringEntity对于入参要求比较灵活,且多用于json
            StringEntity se = null;
            try {
                se = new StringEntity(js);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            //设置StringEntity的格式
            se.setContentType(CONTENT_TYPE_TEXT_JSON);
            httpPost.setEntity(se);
            HttpResponse response2 = null;
            String s2 = null;
            try {
            	//获取请求返回的数据
                response2 = client.execute(httpPost);
                HttpEntity entity2 = null;
                entity2 = response2.getEntity();
                //转义
                s2 = EntityUtils.toString(entity2, "UTF-8");
            } catch (IOException e) {
                e.printStackTrace();
            }
            return ResultUtil.successToObject(JSONObject.parseObject(s2));
    
    展开全文
  • 一些自己的理解,自己创建一个api,返回值是json类型的字符串,在后台取出来之后对json类型的字符串进行一系列处理。
    json数据如下
    
        "name": [
            {
                "age": 25,
                "height": 160,
                "weight": 100,
                "email": "1946898935"
            },
            {
                "age": 26,
                "height": 178,
                "weight": 140,
                "email": "1234567"
            }
        ],
        "address": [
            {
                "addressname": "福州市"
            },
            {
                "addressname": "厦门市"
            }
        ]
    }
    下面的代码是访问一个页面并同时调用一个api;
    @RequestMapping("/myapitest")//url映射地址
    	public ModelAndView apitest(){
    	/*	
    	*这是一个页面访问urlmapping
    	*
    	*
    	*/
    //		System.out.println(mysendGet("http://localhost:8080/weidaiTest/testapi","param=p"));
    		String s = mysendGet("http://localhost:8080/weidaiTest/testapi","param=p");//通过mysendGet函数调用接口
    		JSONObject json = JSONObject.fromObject(s);//将字符串转化为json对象
    		JSONArray jary = json.getJSONArray("name");//去到name对应的数组
    		System.out.println(JSONObject.fromObject(jary.get(0)).get("email"));//数组内部的元素是对象,见上面的ison数据,对应到eamil的1946898935
    		ModelAndView mv = new ModelAndView("test");//要返回到浏览器的页面
    		return mv;
    	}
    以下是调用接口的函数
    public static String mysendGet(String url, String param) {
    		String result = "";
    		BufferedReader in = null;
    		try {
    			String urlNameString = url + "?" + param;
    //			System.out.println("请求地址是"+urlNameString);
    			URL realUrl = new URL(urlNameString);
    			// 打开和URL之间的连接
    			URLConnection connection = realUrl.openConnection();
    			// 设置通用的请求属性
    	
    			// 建立实际的连接
    			connection.connect();
    			// 定义 BufferedReader输入流来读取URL的响应
    			in = new BufferedReader(new InputStreamReader(
    					connection.getInputStream()));
    			String line;
    			while ((line = in.readLine()) != null) {
    				System.out.println(line);
    				result+=line;
    			}
    			System.out.println("String在mysendget:"+result);
    			System.out.println("JSONObject在mysendget:"+JSONObject.fromObject(result));
    		} catch (Exception e) {
    			System.out.println("发送GET请求出现异常!" + e);
    			e.printStackTrace();
    		}
    		// 使用finally块来关闭输入流
    		finally {
    			try {
    				if (in != null) {
    					in.close();
    				}
    			} catch (Exception e2) {
    				e2.printStackTrace();
    			}
    		}
    		
    		return JSONObject.fromObject(result).toString();//可以直接返回result
    	}

    下面是一个极其简易的接口,接口返回的是json格式的字符串
    @RequestMapping(value="/testapi",method=RequestMethod.GET)
    	@ResponseBody
    	public String testapi(HttpServletRequest req,HttpServletResponse rpon){
    		/*	
    		*这是一个接口
    		*
    		*
    		*/
    //		System.out.println("调用了接口testapi并且获取到了参数param="+req.getParameter("param"));
    		String s = "{\"name\":[{\"age\":25,\"height\":160,\"weight\":100,\"email\":\"1946898935\"},{\"age\":26,\"height\":178,\"weight\":140,\"email\":\"1234567\"}],\"address\":[{\"addressname\":\"福州市\"},{\"addressname\":\"厦门市\"}]}";
    		//JSONObject json = JSONObject.fromObject(s);
    		return s;
    	}



    展开全文
  • webapi 获取json数据

    2019-02-26 17:33:00
    TestAsync2 接口中,我们的属性小写了,这是自己序列化json数据造成的,俗称:驼峰式。 当然这个是可以设置的,我们在webapiConfig.cs 中可以设置我们的json的属性 public static class WebApiConfig { ...

    一般的我们可以直接使用参数来接受,这个就不多介绍了

        [HttpGet]
            public IHttpActionResult Test2([FromUri]string name)
            {
                object obj = new
                {
                    name = "sss",
                    age = 78,
                    sex = true
                };
                return Ok(new { errcode = 0, data = obj });
            }
    
            [HttpPost]
            public IHttpActionResult Test3([FromBody]string name)
            {
                throw new Exception("嘻嘻嘻");
            }
    
    
            /// <summary>
            /// 返回强类型
            /// </summary>
            /// <param name="name"></param>
            /// <returns></returns>
            [HttpGet]
            public CommonOutDto Test4([FromUri]string name)
            {
                CommonOutDto outDto = new CommonOutDto();
                outDto.errcode = 0;
                return outDto;
            } 

     

     

    现在一般使用json来传递参数,如果使用强类型,需要我们把类的属性和参数名设置一样就可以了。get,post都可以,这里只演示了post请求

     

    ①使用参数名来接受,这样显示不管你是传递json字符串还是json对象都是接收不到的

     [HttpPost]
            public IHttpActionResult Test4([FromBody]string json)
            {
                throw new Exception("嘻嘻嘻");
            }

     

    ②稍微改动下,把参数类型换成objct,这样我们不管是传递json对象和字符串都是能够接受到的

     [HttpPost]
            public IHttpActionResult Test4([FromBody]object json)
            {
                throw new Exception("嘻嘻嘻");
            }

    json对象;

     

    json字符串:

     

     

    正解:普通的两种使用方式

         /// <summary>
            /// 如果没有定义Dto类型
            /// </summary>
            /// <param name="json">json数据</param>
            /// <returns></returns>
            [HttpPost]
            public IHttpActionResult Test3([FromBody]object json)
            {
                JObject @object = JObject.Parse(json.ToString());
    
                return Ok(@object);
            }
    
            /// <summary>
            /// 定义了Dto类型
            /// </summary>
            /// <param name="inDto">
            /// 根据json 定义的类
            /// </param>
            /// <returns></returns>
            [HttpPost]
            public IHttpActionResult Test4(ToiletInfoInDto inDto)
            {
                // CommonOutDto 为自定义的返回类
                CommonOutDto outDto = new CommonOutDto();
                outDto.dataStr = "请求成功";
                outDto.errcode = 0;    
                return Ok(outDto);
            }

     

    ToiletInfoInDto :
      /// <summary>
        /// 厕所信息
        /// </summary>
        public class ToiletInfoInDto
        {
            /// <summary>
            /// 厕所编号
            /// </summary>
            public string CsNum { get; set; }
    
            /// <summary>
            /// 厕所名称
            /// </summary>
            public string CsName { get; set; }
    
            /// <summary>
            /// 百度经度
            /// </summary>
            public string CoordX { get; set; }
    
            /// <summary>
            /// 百度纬度
            /// </summary>
            public string CoordY { get; set; }     
    
            /// <summary>
            /// 厕所等级
            /// </summary>
            public string Rank { get; set; }     
        }
    View Code
    CommonOutDto:
      /// <summary>
        /// 返回公共类
        /// </summary>
        public class CommonOutDto
        {
            public int errcode { get; set; }
    
            public string dataStr { get; set; }
    
            public string errmsgStr { get; set; }
        }
    View Code

     

     

     

     ③mvc中也可以写接口,我们肯定使用过流接受过参数,那webapi中同样是可以的

    mvc中可以直接写:

     string json2 = new StreamReader(Request.InputStream).ReadToEnd();

    webapi中没有 HttpContext这个,我们可以引用进行使用

      //引用 using System.Web;
                    string json2 = new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();

    webapi中我们使用request强制同步获取数据,显示获取不到

       //强制同步获取不到数据
                    string aa = this.Request.Content.ReadAsStringAsync().GetAwaiter().GetResult();

     

    推荐:使用异步的方式

     

            /// <summary>
            /// 使用objct接受
            /// </summary>
            /// <param name="json"></param>
            /// <returns></returns>
            [HttpPost]
            public async Task<IHttpActionResult> TestAsync([FromBody]object json)
            {
                JObject @object = JObject.Parse(json.ToString());
                return await Task.FromResult<IHttpActionResult>(Ok(@object));
            }
    
            /// <summary>
            /// 使用强类型接受
            /// </summary>
            /// <param name="inDto"></param>
            /// <returns></returns>
            [HttpPost]
            public async Task<IHttpActionResult> TestAsync2(ToiletInfoInDto inDto)
            {
                return await Task.FromResult<IHttpActionResult>(Ok(inDto));
            }
    
            /// <summary>
            /// 使用读取数据的方式
            /// </summary>
            /// <returns></returns>
            [HttpPost]
            public async Task<IHttpActionResult> TestAsync3()
            {
                string aa = await this.Request.Content.ReadAsStringAsync();
                return await Task.FromResult<IHttpActionResult>(Ok(aa));
            }
    
            /// <summary>
            /// 使用强类型接受,返回强类型     推荐这种,输入,输出都新建一个对应的Dto进行处理
            /// </summary>
            /// <param name="inDto">输入类</param>
            /// <returns>输出类</returns>
            [HttpPost]
            public async Task<CommonOutDto> TestAsync4(ToiletInfoInDto inDto)
            {
                CommonOutDto outDto = new CommonOutDto();
                outDto.errcode = 0;          
                return await Task.FromResult(outDto);
            }

     

     

    显示结果:

     

     

     

    可以看到我们的 TestAsync2 接口中,我们的属性小写了,这是自己序列化json数据造成的,俗称:驼峰式。  当然这个是可以设置的,我们在webapiConfig.cs 中可以设置我们的json的属性
      public static class WebApiConfig
        {
            public static void Register(HttpConfiguration config)
            {
    
                // Web API 配置和服务
    
                // Web API 路由
                config.MapHttpAttributeRoutes();
                //多添加一个action
                config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{action}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                );
                // 干掉XML序列化器   两种都可以
                //GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
                config.Formatters.Remove(config.Formatters.XmlFormatter);
    
                //配置json数据格式
                JsonMediaTypeFormatter jsonFormatter = config.Formatters.JsonFormatter;
                //忽略循环引用,如果设置为Error,则遇到循环引用的时候报错(建议设置为Error,这样更规范)
                jsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Error;
                //日期格式化,默认的格式也不好看
                jsonFormatter.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
                // 对 JSON 数据使用混合大小写。跟属性名同样的大小.输出
                jsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
                //json中属性开头字母小写的驼峰命名
                //jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            }
        }

     

     

     

    总结:

    1:一般的我们使用Object类型或者强类型来接接收

    2:提高效率,我们是异步

    题外:我们一般都会准备一个Dto来接受我们的json对象,如果你不想这样写,也可以使用JObject来用。

     

    转载于:https://www.cnblogs.com/Sea1ee/p/10438838.html

    展开全文
  • #by 侯禹江#2018、/0/27import jsonfrom urllib.request import Request, urlopen#zb网站获取数据Apiurl = ...

    #by 侯禹江

    #2018、/0/27

    import json

    from urllib.request import Request, urlopen

    #zb网站获取数据Api

    url = "https://trans.bitkk.com/line/topall?area=&jsoncallback=jQuery191025699015513536727_1530079609291&_=1530079609293"

    #包装头部

    firefox_headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}

    #构建请求

    request = Request( url, headers=firefox_headers )

    html = urlopen( request )

    #获取数据

    data = html.read()

    #转换成字符串

    strs = str(data)

    #截取字符串

    print(len(strs))

    strs_for_json = strs[44:]

    strs_for_json= strs_for_json[:-2]

    print(strs_for_json)

    #转换成JSON

    data = strs_for_json

    datas = json.dumps(data)

    #转换成字典数据

    data_json = json.loads(data)

    print(type(data_json))#

    print(data_json['datas'][0]['market'],data_json['datas'][0]['sell1Price'])

    print(len(data_json['datas']))

    len = len(data_json['datas'])

    #输出价格表

    print("*****************************zb价格获取***************************************")

    for i in range(0,len):

    print("币种\市场类型:"+data_json['datas'][i]['market'], "^^^^^^^","实时价格:"+data_json['datas'][i]['sell1Price'],"^^^^^^^","24小时最高价格:"+data_json['datas'][i]['hightPrice'],"^^^^^^^","24小时最低价格:"+data_json['datas'][i]['lastPrice'])

    展开全文
  • WordPress 4.0的一个亮点就是JSON API的加入,今天我们提前来看看怎么获取JSON的内容显示出来。过程就是用PHP获取远程JSON的内容,然后把获取到的JSON转化为PHP对象,然后循环输出内容。通过PHP和WordPress ...
  • data.json文件内容 { &amp;amp;quot;code&amp;amp;quot;: 0, &amp;amp;quot;msg&amp;amp;quot;: &amp;amp;quot;请求成功&amp;amp;quot;, &amp;amp;quot;data&amp;amp;quot;: [ ...
  • php解析json数据并输出

    2020-09-17 10:48:12
    代码 $v->data, "type"=>$v->type, "date"=>$v->date ); array_push($all_arr,$newarr);//插入数组 } echo json_encode($all_arr);//输出 结果:
  • 我们在日常的开发工作中免不了要写接口,json格式文本的输出是制作接口必须掌握的,现在通行的接口基本是采用json格式的数据。下面话不多说,来看看本文的详细内容: 简单的php json文件输出: <?php $data =...
  • 采用的是和风天气的降水接口,因为api需要付费,所以就不把自己的key放出来了。 json解析工具用的是阿里巴巴的fastjson。用了很多次的System.out.println(),只是为了测试。 代码如下: package json; import ...
  • Java数据接口编写简单例子,Java Web Json解析,服务端接口输出Json数据,客户端通过HTTP获取接口Json数据。 目前主流的CS结构,数据都是通过RESTful风格接口形式呈现,不管是桌面级应用程序还是手机端,接口是我们...
  • API返回 json数据的解析和取值

    万次阅读 2016-07-19 14:54:09
    有的API返回的数据比较少,适合用json来传,后台与前台的数据交换也经常用 json来传。我们简单看个json的文档: 现在我们试着提取这个json数据包里的“nickname”和“headimgurl”的内容。代码如下: public ...
  • 在做一API,APP端想抽取简要数据进行缓存在手机端,所以设计了一个接口提供给APP调取,经过测试,这个JSON格式的数据包在在2M左右(尽可能的精简并且做了序列化处理),导致response时间大概要10秒左右,这样很不理想,...
  • 插件路径/e/extend/api/...实现效果:输入栏目id、发布年月,最终输出所匹配的信息 <?php require('../../class/connect.php'); //引入数据库配置文件和公共函数文件 require('../../class/db_sql.php'); //引入
  • php读取百度天气API Json数据

    千次阅读 2015-03-13 23:32:16
    本文简单介绍如何利用百度的车联网API读到JSON数据 官方手册 http://developer.baidu.com/map/wiki/index.php?title=car/api/weather#.E8.BF.94.E5.9B.9E.E7.BB.93.E6.9E.9C 今天折腾了好几个小时才把百度API里的...
  • 根据现有的API接口将获取JSON数据写入数据库 利用API获取数据存入数据库 获取API的URl 例如网址API的网址为:https://wuliang.art/ncov/doc.html#/default/谣言/getRumorListUsingGET 注意:但是在你获取的URl为:...
  • 项目中服务端提供restful api接口给前端网站、h5和app端使用,通过http请求返回json数据。目前存在一个A接口,因前期业务需要输出50个业务属性供app端业务开发,现在h5也有相似需求需要用到A接口,不同的是仅用到30...
  • 文章目录解决json数据输出带转义符的问题一、说明二、记录 解决json数据输出带转义符的问题 一、说明 编程语言:java 参考 https://mvnrepository.com/artifact/org.apache.commons/commons-text ...
  • GO获取api 接口json格式数据代码

    千次阅读 2019-06-14 17:56:37
    1.接口数据格式;{ "code":0, "isAdmin":true, "data":[{ "id":2, "ip":"192.168.54.12", "desc":"nginx", "owner":"lops01" }, { "id":5, "ip":"192.168.77.237", "desc"...
  • Zabbix API可以通过JSON RPC协议来获取历史数据。 可以采用脚本或者任何支持JSON RPC的工具来使用API。 基本请求格式 Zabbix API 简化的JSON请求如下: { "jsonrpc": "2.0", "method": "method.name", "params...
  • 项目 API1url0117 // // ViewController.swift // API1url0117 // // Created by Mac on 1/17/19. // Copyright © 2019 wjb. All rights reserved. // import UIKit class ViewController: UIViewController {....
  • 这两天在工作中使用SignalR的WebSocket做数据实时传递的功能开发,在后端主动向前端广播数据Json传递时,前端获取Json中对应类的变量名首字母默认传递的是大写。而前端一直获取到的后台返回给Json中字段均为首...
  • 此代码使用Google翻译API通过复杂的json解析将数据从输入的json文件转换为任何所需语言的输出json文件,此Spring启动应用程序将获取输入的json文件将值转换为所有嵌套级别的任何给定语言。需要使用Google api键在...
  • 网络接口获取json数据不完全

    千次阅读 2016-07-09 16:01:41
    也就是说当我们一个接口获取...* 我们的Json数据很长,但是由于AndroidStudio 中 LogCat的限制,所能输出的字符是有限的(我没有去了解具体的限制——是通过吧内容显示到TextView中知道我获取的数据没有错——也就是

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 91,947
精华内容 36,778
关键字:

从api获取json数据并输出