Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parsing a JSON String with serde_json

pub fn rust_server() -> redis::RedisResult<()> {
    println!("-> redis_server");
    let client = redis::Client::open(get_uri())?;
    let mut con = client.get_connection()?;

    println!("-> redis_server: {}", get_uri());

    println!("-> redis_server_pub_sub");
    let mut pub_sub = con.as_pubsub();

    println!("-> redis_server subscribe channels: {}", get_sub());
    pub_sub.subscribe(get_sub())?;

    loop {
        let msg = pub_sub.get_message()?;
        let payload: String = msg.get_payload()?;

        println!("{}", payload);
    }
}

How can I parse the following JSON payload of type String with serde_json?

let payload: String = msg.get_payload()?;
like image 514
Nils Vennemann Avatar asked Oct 24 '25 02:10

Nils Vennemann


1 Answers

The solution is to use serde_json::from_str and it's well documented:

use serde::Deserialize;

#[derive(Deserialize, Debug)]
struct User {
    fingerprint: String,
    location: String,
}

fn main() {
    // The type of `j` is `&str`
    let j = "
        {
            \"fingerprint\": \"0xF9BA143B95FF6D82\",
            \"location\": \"Menlo Park, CA\"
        }";

    let u: User = serde_json::from_str(j).unwrap();
    println!("{:#?}", u);
}
like image 167
cafce25 Avatar answered Oct 26 '25 23:10

cafce25



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!