6

I want to use Rust to write a static website but I have a very basic problem to serve data for it. The code is roughly as follows:

pub struct Post { title: String, created: String, link: String, description: String, content: String, author: String, } fn main() { let mut posts:Vec<Post> = Vec::new(); let post = Post { title: "the title".to_string(), created: "2021/06/24".to_string(), link: "/2021/06/24/post".to_string(), description: "description".to_string(), content: "content".to_string(), author: "jack".to_string(), }; posts.push(post); } 

How can I convert posts into JSON like:

[{ "title": "the title", "created": "2021/06/24", "link": "/2021/06/24/post", "description": "description", "content": "content", "author": "jack", }] 
0

1 Answer 1

12

The simplest and cleanest solution is to use serde's derive abilities to have the JSON structure derived from your Rust struct:

use serde::{Serialize}; #[derive(Serialize)] pub struct Post { title: String, created: String, link: String, description: String, content: String, author: String, } 

Standard collections automatically implement Serialize when their content does.

You can thus build your json string with

let mut posts:Vec<Post> = Vec::new(); let post = Post { title: "the title".to_string(), created: "2021/06/24".to_string(), link: "/2021/06/24/post".to_string(), description: "description".to_string(), content: "content".to_string(), author: "jack".to_string(), }; posts.push(post); let json = serde_json::to_string(&posts)?; 

playground

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.