如何使用JINT库从Javascript获取JSON值
我有一个JavaScript文件:如何使用JINT库从Javascript获取JSON值,javascript,c#,json,jint,Javascript,C#,Json,Jint,我有一个JavaScript文件: var input = { "CONTRATE": 0, "SALINC": 0, "RETAGE": 55.34, "MARSTATUS": "single", "SPOUSEDOB": "1970-01-01", "VIEWOPTION": "pension" }; var inputValidation = "input.CONTRATE > 50 && input.SALINC < 50 &
var input = {
"CONTRATE": 0,
"SALINC": 0,
"RETAGE": 55.34,
"MARSTATUS": "single",
"SPOUSEDOB": "1970-01-01",
"VIEWOPTION": "pension"
};
var inputValidation = "input.CONTRATE > 50 && input.SALINC < 50 && input.RETAGE > 50";
eval(inputValidation);
var输入={
“合同”:0,
“SALINC”:0,
“重修”:55.34,
“婚姻状况”:“单身”,
“喷动物”:“1970-01-01”,
“查看选项”:“养老金”
};
var inputValidation=“input.contate>50&&input.salic<50&&input.RETAGE>50”;
eval(输入验证);
如何使用JINT作为JSON对象字符串来获取“input”变量的JSON值?我相信我们可以通过3种方式达到预期的效果 方法1-使用Jint的内置解析器 Jint有内置的解析器来支持javascript的
JSON.parse
和JSON.stringify
函数。我们可以将其用于此任务:
var engine =new Engine();
var json = @"{
""CONTRATE"": 0,
""SALINC"": 0,
""RETAGE"": 55.34,
""MARSTATUS"": ""single"",
""SPOUSEDOB"": ""1970-01-01"",
""VIEWOPTION"": ""pension""
}";
var input = new JsonParser(engine).Parse(json);
var result= engine
.SetValue("input", input)
.Execute("input.CONTRATE > 50 && input.SALINC < 50 && input.RETAGE > 50")
.GetCompletionValue().AsBoolean();
var引擎=新引擎();
var json=@”{
“合同”:0,
“salic”:0,
“重修”:55.34,
“MARSTATUS”:“single”,
“喷动物”:“1970-01-01”,
“查看选项”:“养老金”
}";
var输入=新的JsonParser(引擎).Parse(json);
var结果=发动机
.SetValue(“输入”,输入)
.Execute(“input.contate>50&&input.salic<50&&input.RETAGE>50”)
.GetCompletionValue().AsBoolean();
方法2-使用第三方Json序列化程序
Jint接受POCO对象作为输入,因此我们可以首先将json转换为POCO,然后将其提供给Jint以获得结果(在本例中,我使用json.net作为反序列化器)
var input=Newtonsoft.Json.JsonConvert.DeserializeObject(Json);
var结果=发动机
.SetValue(“输入”,输入)
.Execute(“input.contate>50&&input.salic<50&&input.RETAGE>50”)
.GetCompletionValue().AsBoolean();
方法3-将JSON对象放入评估脚本中
或者正如Ros先生(Jint的作者)建议的那样,我们可以将JSON对象和条件放在同一个脚本中,并将其传递给Jint进行评估
var engine = new Engine();
var js = @"
input={
""CONTRATE"": 0,
""SALINC"": 0,
""RETAGE"": 55.34,
""MARSTATUS"": ""single"",
""SPOUSEDOB"": ""1970-01-01"",
""VIEWOPTION"": ""pension""
};
input.CONTRATE > 50 && input.SALINC < 50 && input.RETAGE > 50;";
var result = engine
.Execute(js)
.GetCompletionValue().AsBoolean();
var引擎=新引擎();
var js=@”
输入={
“合同”:0,
“salic”:0,
“重修”:55.34,
“MARSTATUS”:“single”,
“喷动物”:“1970-01-01”,
“查看选项”:“养老金”
};
input.contate>50&&input.salic<50&&input.RETAGE>50;”;
var结果=发动机
.Execute(js)
.GetCompletionValue().AsBoolean();
您还可以使用条件将JSON对象直接粘贴到脚本中。它将作为脚本中的对象进行计算。或者,如果它是作为字符串传递的,则使用JSON.parse
,而不是从C#执行。
var engine = new Engine();
var js = @"
input={
""CONTRATE"": 0,
""SALINC"": 0,
""RETAGE"": 55.34,
""MARSTATUS"": ""single"",
""SPOUSEDOB"": ""1970-01-01"",
""VIEWOPTION"": ""pension""
};
input.CONTRATE > 50 && input.SALINC < 50 && input.RETAGE > 50;";
var result = engine
.Execute(js)
.GetCompletionValue().AsBoolean();