【问题标题】:Parsing a valid json string by serde will cause an error - "trailing characters" [closed]通过 serde 解析有效的 json 字符串将导致错误 - “尾随字符” [关闭]
【发布时间】:2020-10-19 10:34:19
【问题描述】:

我有一个 Rust 库和 Ruby 项目。我通过 FFi 从 Ruby 调用 Rust 函数。

Rust 库中有一个函数可以接收字符串并将其转换为 json。

红宝石方面:

my_json_raw_str = {
  network: {
    server_address: "my_server.com"
  }
}

res = send_it_to_rust(my_json_raw_str.to_json)

Rust 中的函数在解析从 Ruby 发送给它的 json 字符串时会抛出异常。

从 Rust 返回一个错误:

Invalid parameters: trailing characters at line 1 column 47\nparams: [{\"network\":{\"server_address\":\"my_server.com\"}}\u0000]

Json 是有效的,不是吗?

serdeserde_jsonserde_derive 用于 Rust 方面。

如何修复错误以及为什么会导致?

【问题讨论】:

  • \u0000 在里面做什么?

标签: json ruby rust serde


【解决方案1】:

Json 是有效的,不是吗?

您的 JSON 无效 有效,因为您的 FFI 层不正确:如果您查看错误,它清楚地告诉您数据中有一个尾随 NUL 字节,这意味着在 C 之间桥接时和 Rust,你从 C 字符串中留下了尾随的 NUL 字节。

【讨论】:

    猜你喜欢
    • 2013-08-23
    • 1970-01-01
    • 2016-12-17
    • 2014-01-04
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2022-08-18
    • 2019-05-13
    相关资源
    最近更新 更多