Crate json_str

source ·
Expand description

Json String Literal Generator

Write json with Rust syntax instead of hard to read inline strings. Results are converted to a &'static str at compile-time.

§Usage

This crate is on crates.io.

There are two ways to reference json_str in your projects, depending on whether you’re on the stable/beta or nightly channels.

§Stable

To get started, add json_str to your Cargo.toml:

[dependencies]
json_str = "*"

And reference it in your crate root:

#[macro_use]
extern crate json_str;

§Nightly

To get started, add json_str to your Cargo.toml:

[dependencies]
json_str = { version = "*", features = "nightly" }

And reference it in your crate root:

#![feature(plugin)]
#![plugin(json_str)]

If you’re on the nightly channel, it’s better to use the above plugin version, because the conversion and sanitisation takes place at compile-time instead of runtime, saving precious runtime cycles.

§Examples

The json_str! macro will take an inline token tree and return an str literal:

let json = json_str!({
	"query": {
		"filtered": {
			"query": {
				"match_all": {}
			},
			"filter": {
				"geo_distance": {
					"distance": "20km",
					"location": {
						"lat": 37.776,
						"lon": -122.41
					}
				}
			}
		}
	}
});

This will also work for unquoted keys for something a bit more rusty:

let json = json_str!({
	query: {
		filtered: {
			query: {
				match_all: {}
			},
			filter: {
				geo_distance: {
					distance: "20km",
					location: {
						lat: 37.776,
						lon: -122.41
					}
				}
			}
		}
	}
});

For json values that can’t be fully determined at compile-time, use json_macros instead.

Macros§