使用Unirest调用API获取JSON响应后无法打印值,求解决方案
如何提取并打印Unirest返回的JSON响应值
别担心,刚接触JSON确实容易懵,我来一步步帮你搞定!首先先拆解下你拿到的响应结构:
[{"number":"3323-2323232","updated_at":"2018-04-09 11:15:53","created_at":"2018-04-09 11:15:53","id":2,"message":"Dear dasdas! your payment against Booking is due. Kindly make the due payment.","status":0}]
这是一个JSON数组(外面的方括号[]就是数组标志),里面只装了一个JSON对象(大括号{}包裹的键值对集合)。所以我们要先从数组里取出这个对象,再根据键名提取对应的值。
下面给你几个常用编程语言的实现示例,你可以对应自己用的语言来参考:
Java 示例
假设你用Unirest的Java版本,获取响应后可以这样处理:
// 假设你已经获取了响应 HttpResponse<JsonNode> response = Unirest.get("你的API地址").asJson(); // 从响应中拿到JSON数组 JsonNode jsonArray = response.getBody(); // 取出数组里的第一个对象(因为你的数组只有一个元素) JsonNode dataObject = jsonArray.getArray().get(0); // 提取并打印各个值 System.out.println("Number: " + dataObject.get("number").asString()); System.out.println("ID: " + dataObject.get("id").asInt()); System.out.println("Message: " + dataObject.get("message").asString()); System.out.println("Status: " + dataObject.get("status").asInt());
Python 示例
Python版本的Unirest处理起来更简洁,因为响应的.json()方法会直接把JSON转换成Python的列表/字典:
import unirest # 发送请求并获取响应 response = unirest.get("你的API地址") # 把响应转换成Python数据结构:这里是一个列表,第一个元素是字典 data_list = response.json() data_dict = data_list[0] # 打印各个值 print(f"Number: {data_dict['number']}") print(f"ID: {data_dict['id']}") print(f"Message: {data_dict['message']}") print(f"Status: {data_dict['status']}")
JavaScript (Node.js) 示例
Node.js环境下的Unirest,响应的body属性就是解析后的JSON数组:
const unirest = require('unirest'); unirest.get("你的API地址") .then(response => { // 取出数组里的第一个对象 const data = response.body[0]; // 打印各个值 console.log(`Number: ${data.number}`); console.log(`ID: ${data.id}`); console.log(`Message: ${data.message}`); console.log(`Status: ${data.status}`); }) .catch(error => { console.error('请求出错:', error); });
核心思路就是:先从数组中取出目标对象,再通过键名(比如number、id)获取对应的值,最后打印出来就可以啦!
内容的提问来源于stack exchange,提问作者fahad pirzada
相关产品推荐
相关产品推荐

