通过 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 是有效的,不是吗?
serde
、serde_json
和 serde_derive
用于 Rust 端。
如何修复错误以及为什么会导致错误?
Json is valid, isn't it?
您的 JSON 无效,因为您的 FFI 层不正确:如果您查看错误,它清楚地告诉您尾随 NUL 字节在您的数据中,这意味着在 C 和 Rust 之间桥接时,您从 C 字符串中留下了尾随 NUL 字节。
我有一个 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 是有效的,不是吗?
serde
、serde_json
和 serde_derive
用于 Rust 端。
如何修复错误以及为什么会导致错误?
Json is valid, isn't it?
您的 JSON 无效,因为您的 FFI 层不正确:如果您查看错误,它清楚地告诉您尾随 NUL 字节在您的数据中,这意味着在 C 和 Rust 之间桥接时,您从 C 字符串中留下了尾随 NUL 字节。