public function evaluate(Json $json, $expression)
 {
     if ($this->evaluationMode === 'javascript') {
         $expression = str_replace('->', '.', $expression);
     }
     try {
         return $json->read($expression, $this->propertyAccessor);
     } catch (\Exception $e) {
         throw new \Exception(sprintf('Failed to evaluate expression "%s"', $expression), 0, $e);
     }
 }
 public function test_should_read_valid_expression()
 {
     $this->given($accessor = PropertyAccess::createPropertyAccessor(), $sut = new SUT('{"foo":"bar"}'))->when($result = $sut->read('foo', $accessor))->phpString($result)->isEqualTo('bar');
 }