使用Nim的异步HTTP调用和json

xqnpmsa8  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(140)

我的代码:

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

终端里没有回音,我到底做错了什么?

rggaifut

rggaifut1#

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)

相关问题