通过 serde 解析有效的 json 字符串将导致错误 - "trailing characters"

Parsing a valid json string by serde will cause an error - "trailing characters"

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

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

Ruby 边:

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 端。

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

Json is valid, isn't it?

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