Files
google-apis-rs/serde_json/value/index.html
2024-03-05 21:06:01 +01:00

72 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="The Value enum, a loosely typed way of representing any valid JSON value."><title>serde_json::value - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="serde_json" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../serde_json/index.html">serde_json</a><span class="version">1.0.107</span></h2></div><h2 class="location"><a href="#">Module value</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#reexports">Re-exports</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li></ul></section><h2><a href="../index.html">In crate serde_json</a></h2></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../serde_json/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">serde_json</a>::<wbr><a class="mod" href="#">value</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/serde_json/value/mod.rs.html#1-1008">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The Value enum, a loosely typed way of representing any valid JSON value.</p>
<h2 id="constructing-json"><a href="#constructing-json">Constructing JSON</a></h2>
<p>Serde JSON provides a <a href="../macro.json.html" title="macro serde_json::json"><code>json!</code> macro</a> to build <code>serde_json::Value</code>
objects with very natural JSON syntax.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>serde_json::json;
<span class="kw">fn </span>main() {
<span class="comment">// The type of `john` is `serde_json::Value`
</span><span class="kw">let </span>john = <span class="macro">json!</span>({
<span class="string">"name"</span>: <span class="string">"John Doe"</span>,
<span class="string">"age"</span>: <span class="number">43</span>,
<span class="string">"phones"</span>: [
<span class="string">"+44 1234567"</span>,
<span class="string">"+44 2345678"
</span>]
});
<span class="macro">println!</span>(<span class="string">"first phone number: {}"</span>, john[<span class="string">"phones"</span>][<span class="number">0</span>]);
<span class="comment">// Convert to a string of JSON and print it out
</span><span class="macro">println!</span>(<span class="string">"{}"</span>, john.to_string());
}</code></pre></div>
<p>The <code>Value::to_string()</code> function converts a <code>serde_json::Value</code> into a
<code>String</code> of JSON text.</p>
<p>One neat thing about the <code>json!</code> macro is that variables and expressions can
be interpolated directly into the JSON value as you are building it. Serde
will check at compile time that the value you are interpolating is able to
be represented as JSON.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>full_name = <span class="string">"John Doe"</span>;
<span class="kw">let </span>age_last_year = <span class="number">42</span>;
<span class="comment">// The type of `john` is `serde_json::Value`
</span><span class="kw">let </span>john = <span class="macro">json!</span>({
<span class="string">"name"</span>: full_name,
<span class="string">"age"</span>: age_last_year + <span class="number">1</span>,
<span class="string">"phones"</span>: [
<span class="macro">format!</span>(<span class="string">"+44 {}"</span>, random_phone())
]
});</code></pre></div>
<p>A string of JSON data can be parsed into a <code>serde_json::Value</code> by the
<a href="../fn.from_str.html" title="fn serde_json::from_str"><code>serde_json::from_str</code></a> function. There is also
<a href="../fn.from_slice.html" title="fn serde_json::from_slice"><code>from_slice</code></a> for parsing from a byte slice <code>&amp;[u8]</code> and
<a href="../fn.from_reader.html" title="fn serde_json::from_reader"><code>from_reader</code></a> for parsing from any <code>io::Read</code> like a File or
a TCP stream.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>serde_json::{json, Value, Error};
<span class="kw">fn </span>untyped_example() -&gt; <span class="prelude-ty">Result</span>&lt;(), Error&gt; {
<span class="comment">// Some JSON input data as a &amp;str. Maybe this comes from the user.
</span><span class="kw">let </span>data = <span class="string">r#"
{
"name": "John Doe",
"age": 43,
"phones": [
"+44 1234567",
"+44 2345678"
]
}"#</span>;
<span class="comment">// Parse the string of data into serde_json::Value.
</span><span class="kw">let </span>v: Value = serde_json::from_str(data)<span class="question-mark">?</span>;
<span class="comment">// Access parts of the data by indexing with square brackets.
</span><span class="macro">println!</span>(<span class="string">"Please call {} at the number {}"</span>, v[<span class="string">"name"</span>], v[<span class="string">"phones"</span>][<span class="number">0</span>]);
<span class="prelude-val">Ok</span>(())
}</code></pre></div>
</div></details><h2 id="reexports" class="section-header"><a href="#reexports">Re-exports</a></h2><ul class="item-table"><li><div class="item-name" id="reexport.Map"><code>pub use crate::map::<a class="struct" href="../struct.Map.html" title="struct serde_json::Map">Map</a>;</code></div></li></ul><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.Number.html" title="struct serde_json::value::Number">Number</a></div><div class="desc docblock-short">Represents a JSON number, whether integer or floating point.</div></li><li><div class="item-name"><a class="struct" href="struct.Serializer.html" title="struct serde_json::value::Serializer">Serializer</a></div><div class="desc docblock-short">Serializer whose output is a <code>Value</code>.</div></li></ul><h2 id="enums" class="section-header"><a href="#enums">Enums</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.Value.html" title="enum serde_json::value::Value">Value</a></div><div class="desc docblock-short">Represents any valid JSON value.</div></li></ul><h2 id="traits" class="section-header"><a href="#traits">Traits</a></h2><ul class="item-table"><li><div class="item-name"><a class="trait" href="trait.Index.html" title="trait serde_json::value::Index">Index</a></div><div class="desc docblock-short">A type that can be used to index into a <code>serde_json::Value</code>.</div></li></ul><h2 id="functions" class="section-header"><a href="#functions">Functions</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.from_value.html" title="fn serde_json::value::from_value">from_value</a></div><div class="desc docblock-short">Interpret a <code>serde_json::Value</code> as an instance of type <code>T</code>.</div></li><li><div class="item-name"><a class="fn" href="fn.to_value.html" title="fn serde_json::value::to_value">to_value</a></div><div class="desc docblock-short">Convert a <code>T</code> into <code>serde_json::Value</code> which is an enum that can represent
any valid JSON data.</div></li></ul></section></div></main></body></html>