:sig StringMap DValue::to_stringmap() const :params return value : a flat `StringMap` projection of the node :see >types 0_DValue StringMap to_string dv_keys dv_values :content Converts a `DValue` into a flat `StringMap`. This is a read accessor: it is `const`, never creates or modifies nodes, and dereferences internal references automatically. - Map-shaped nodes produce one entry per child, with each child read via `to_string()`. Nested maps flatten to empty strings — this is a one-level projection, not a serializer. - A non-empty scalar produces a single `"value"` entry holding the scalar. - Empty values and unresolvable references produce an empty map. Use this when handing request- or config-shaped data to APIs that take `StringMap`, such as `sqlite_query()` / `mysql_query()` parameter maps or `encode_query()`. ## Example ```cpp StringMap params = context.props["filters"].to_stringmap(); DValue rows = sqlite_query(db, "select * from notes where author = :author", params); ``` For a faithful representation of nested data, use `json_encode()` instead. ## Related Concepts - PHP: casting a one-level array with `array_map('strval', $a)` - JavaScript: `Object.fromEntries(Object.entries(o).map(([k, v]) => [k, String(v)]))`