如何在Dart中发出网络请求并返回json对象

时间:2019-01-12 10:01:10

标签: dart flutter

使用Python进行网络请求很容易,而getResponse(String url) async { HttpClient httpClient = new HttpClient(); HttpClientRequest request = await httpClient.getUrl(Uri.parse(url)); HttpClientResponse response = await request.close(); String responseBody = await response.transform(utf8.decoder).join(); Map jsonResponse = jsonDecode(responseBody) as Map; httpClient.close(); return jsonResponse; } 请求就变得很容易。

在Dart中,我可以这样请求:

getResponse

显然是异步请求。我认为上述代码可以重复使用多次。 所以我想发出请求并返回一个JSON对象。

Future<dynamic>

如您所见,以上方法{{1}}返回{{1}}。那么,如何调用它并获取json值呢?

1 个答案:

答案 0 :(得分:2)

要从Future内部获得动态,请执行以下操作之一:

if(property_exists($stdClass,"order"))
{
  echo $stdClass->order;
}

请注意,您自己的异步方法也可以返回 // option 1 async method MyAsyncMethod() async { dynamic result = await getResponse("http://google.com"); if (result is Map) { // process the data } } // option 2 callback with .then() MyNonAsyncMethod() { getResponse("http://google.com").then ( (dynamic result) { if (result is Map) { // process the data } }); } 并在调用时以相同的两种方式处理。

其中映射是嵌套的Future<something>,结果是您创建的对象的类型,该对象符合Json序列化接口(请参见此link)。

要访问地图中的数据:

Map<String, Dynamic>