0

我正在使用 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 对象。

有没有办法做到这一点?

4

1 回答 1

2

{ a: 1}被解释为块语句而不是对象文字。解决方案是用括号括起来:

({ a: 1 })
于 2017-07-10T15:46:42.553 回答