Eval javascript объект, использующий jint

Я использую jint для разбора кода JavaScript, работают следующие коды js:

  • 1
  • [1]
  • {}

но этот провал:

{ a: 1}

с этой ошибкой:

int.Parser.ParserException: Line 1: Unexpected token : at Jint.Parser.JavaScriptParser.ThrowError(Token token, String messageFormat, Object[] arguments) at Jint.Parser.JavaScriptParser.ThrowUnexpected(Token token) at Jint.Parser.JavaScriptParser.ConsumeSemicolon() at Jint.Parser.JavaScriptParser.ParseStatement() at Jint.Parser.JavaScriptParser.ParseStatement() at Jint.Parser.JavaScriptParser.ParseSourceElement() at Jint.Parser.JavaScriptParser.ParseStatementList() at Jint.Parser.JavaScriptParser.ParseBlock() at Jint.Parser.JavaScriptParser.ParseStatement() at Jint.Parser.JavaScriptParser.ParseSourceElement() at Jint.Parser.JavaScriptParser.ParseSourceElements() at Jint.Parser.JavaScriptParser.ParseProgram() at Jint.Parser.JavaScriptParser.Parse(String code, ParserOptions options) at Jint.Engine.Execute(String source)

Я не хочу десериализовать файл JSON, я хочу выполнить объект javascript, я хотел бы иметь что-то вроде:

{
  id: 'one',
  code: function() { console.log('hello'); }
}

Я заметил, что если я сделаю это:

var x = {a: 1}
x

тогда это работает, но мне нужно, чтобы он был объектом JavaScript в моем сценарии.

Есть ли способ добиться этого?

1 ответ

Решение

{ a: 1} интерпретируется как оператор блока, а не как объектный литерал. Решение заключается в том, чтобы заключить его в круглые скобки:

({ a: 1 })
Другие вопросы по тегам