JsonBuilder
Edit this pageWarning: You are browsing the documentation for version 1.x which is not maintained anymore.
If some of your projects are still using this version, consider upgrading.
JsonBuilder
Overview
The JSON builder allows you to build your JSON through the Symfony PropertyAccess Component while keeping the control of the value escaping.
Create a builder
To build some JSON, you will need to instantiate a builder:
1 2 3
use FOS\CKEditorBundle\Builder\JsonBuilder;
$builder = new JsonBuilder();
Set your values
To set your values on the builder, you can either use setValues
or
setValue
but be aware they don't behave same. Basically, setValues
allows you to append a set of values in the builder without escaping
control whereas setValue
allows you to append one value in the builder
but with escaping control.
Append a set of values
To append a set of values in the builder, just use setValues
and
pass your values as first argument:
1
$builder->setValues(array('foo' => array('bar')));
Additionally, this method takes as second argument a path prefix (PropertyAccess Component) which allows you to append your values where you want in the builder graph. So, the next sample is basically the equivalent of the precedent:
1
$builder->setValues(array('bar'), '[foo]');
Append one value
To append one value in the builder, just use setValue
and pass the
path as first argument and the value as second one:
1
$builder->setValue('[foo][0]','bar');
If you want to keep control of the value escaping, this part is for you.
Basically, just pass false
as third argument:
1
$builder->setValue('[foo][0]','bar', false);
Configure the JSON encode options
By default, the JSON builder uses the native json_encode
options.
To override it, you can use:
1 2
$builder->setJsonEncodeOptions(JSON_FORCE_OBJECT);
$jsonEncodeOptions = $builder->getJsonEncodeOptions();
Values for those options can be found in PHP documentation for json_decode()
Build your JSON
Once your builder is well configured, you can build your JSON:
1
$json = $builder->build();
Reset the builder
Because the builder is stateful (keep a track of every values), you need to reset it if you want to restart a json build:
1
$builder->reset();
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use FOS\CKEditorBundle\Builder\JsonBuilder;
$builder = new JsonBuilder();
// {"0":"foo","1":bar}
echo $builder
->setJsonEncodeOptions(JSON_FORCE_OBJECT)
->setValues(array('foo'))
->setValue('[1]', 'bar', false)
->build();
// {"foo":["bar"],"baz":bat}
echo $builder
->reset()
->setValues(array('foo' => array('bar')))
->setValue('[baz]', 'bat', false)
->build();