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 })