小编Liv*_*ort的帖子

在反序列化嵌套的JSON结构时,Serde返回SyntaxError"期望值"

我正在尝试从Web API(规范)反序列化Spotify元数据JSON .我正在使用hyper来从服务器和serde中检索JSON,以将JSON转换为我可以在Rust中实际使用的东西.从服务器检索JSON很好,但是当我尝试将JSON转换为可以使用的对象时,可以使用Rust panicks并抛出错误:

thread '<main>' panicked at 'called 'Result::unwrap()' on an 'Err' value: SyntaxError("expected value", 11, 21)', ../src/libcore/result.rs:746
Run Code Online (Sandbox Code Playgroud)

这在最小的方面没有帮助,因为它根本不表示出错的地方.在搜索网络时,我偶然发现了一个serde问题,这让我认为问题与JSON的嵌套结构有关.

任何人都可以看到出错的地方?修复错误对我来说是最好的解决方案,但如果另一个箱子是一个更好的解决方案,我也想听到.我已经尝试过rustc-serialize,但是crate无法处理json中的'type'变量.

我使用的代码是:

#![feature(custom_derive, plugin)]
#![plugin(serde_macros)]
#![feature(custom_attribute)]

extern crate hyper;
extern crate serde;
extern crate serde_json;

use std::io::Read;
use hyper::Client;
use hyper::header::Connection;

#[derive(Serialize, Deserialize)]
struct Track_Full {
    album: Album_Simp,
    artists: Vec<Artist_Simp>,
    available_markets: Vec<String>,
    disc_number: u8,
    duration_ms: u32,
    explicit: bool,
    external_ids: External_IDs,
    external_urls: External_URLs,
    href: String,
    id: String,
    name: String,
    popularity: u8,
    preview_url: String,
    track_number: u8,
    #[serde(rename="type")]
    _type: …
Run Code Online (Sandbox Code Playgroud)

json spotify rust serde

5
推荐指数
1
解决办法
815
查看次数

标签 统计

json ×1

rust ×1

serde ×1

spotify ×1