100 lines
1.8 KiB
Markdown
100 lines
1.8 KiB
Markdown
---
|
|
title: "json"
|
|
description: "JSON encoding and decoding"
|
|
weight: 80
|
|
type: "docs"
|
|
---
|
|
|
|
JSON encoding and decoding.
|
|
|
|
```javascript
|
|
var json = use('json')
|
|
```
|
|
|
|
## Encoding
|
|
|
|
### json.encode(value, space, replacer, whitelist)
|
|
|
|
Convert a value to JSON text. With no `space` argument, output is pretty-printed with 1-space indent. Pass `false` or `0` for compact single-line output.
|
|
|
|
```javascript
|
|
json.encode({a: 1, b: 2})
|
|
// '{ "a": 1, "b": 2 }'
|
|
|
|
// Compact (no whitespace)
|
|
json.encode({a: 1, b: 2}, false)
|
|
// '{"a":1,"b":2}'
|
|
|
|
// Pretty print with 2-space indent
|
|
json.encode({a: 1, b: 2}, 2)
|
|
// '{
|
|
// "a": 1,
|
|
// "b": 2
|
|
// }'
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
- **value** — the value to encode
|
|
- **space** — indentation: number of spaces, string, or `false`/`0` for compact output. Default is pretty-printed.
|
|
- **replacer** — function to transform values
|
|
- **whitelist** — array of keys to include
|
|
|
|
```javascript
|
|
// With replacer
|
|
json.encode({a: 1, b: 2}, null, function(key, value) {
|
|
if (key == "b") return value * 10
|
|
return value
|
|
})
|
|
// '{"a":1,"b":20}'
|
|
|
|
// With whitelist
|
|
json.encode({a: 1, b: 2, c: 3}, null, null, ["a", "c"])
|
|
// '{"a":1,"c":3}'
|
|
```
|
|
|
|
## Decoding
|
|
|
|
### json.decode(text, reviver)
|
|
|
|
Parse JSON text to a value.
|
|
|
|
```javascript
|
|
json.decode('{"a":1,"b":2}')
|
|
// {a: 1, b: 2}
|
|
|
|
json.decode('[1, 2, 3]')
|
|
// [1, 2, 3]
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
- **text** — JSON string to parse
|
|
- **reviver** — function to transform parsed values
|
|
|
|
```javascript
|
|
// With reviver
|
|
json.decode('{"date":"2024-01-15"}', function(key, value) {
|
|
if (key == "date") return parse_date(value)
|
|
return value
|
|
})
|
|
```
|
|
|
|
## Example
|
|
|
|
```javascript
|
|
var json = use('json')
|
|
|
|
// Save configuration
|
|
var config = {
|
|
debug: true,
|
|
maxRetries: 3,
|
|
endpoints: ["api.example.com"]
|
|
}
|
|
var config_text = json.encode(config, 2)
|
|
|
|
// Load configuration
|
|
var loaded = json.decode(config_text)
|
|
print(loaded.debug) // true
|
|
```
|