使用 Nim 进行异步 HTTP 调用和 json

问题描述 投票:0回答:1

我的代码:

import std/[asyncdispatch, httpclient, json]

proc asyncProc(): Future[string] {.async.} =
  var client = newAsyncHttpClient()
  try:
    let response =  await client.getContent("https://randomuser.me/api/")
    result = parseJson(response).getStr()
  finally:
    client.close()

proc main() {.async.} =
    let results = await asyncProc()
    echo results
  

waitFor main()

使用以下方法编译:

nim c -r --verbosity:0 -d:ssl fetch.nim

终端中没有任何回显,我到底做错了什么?

json http asynchronous nim-lang
1个回答
0
投票

JsonNode
是一个对象变体。它提供诸如
getStr()
之类的 getter 来返回给定
JsonNode
所持有的值 预期类型的默认值。

在您的示例中,以下内容成立:

let result = parseJson(response)
assert result.kind == JObject
assert result.getStr() == ""

您可以使用

JsonNode
运算符将
$
转换为字符串:
$result

例如:

let response =  await client.getContent("https://randomuser.me/api/")
result = $parseJson(response)
© www.soinside.com 2019 - 2024. All rights reserved.