[英]How to get JSON value from Javascript using JINT library
我有這個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 && input.RETAGE > 50";
eval(inputValidation);
如何使用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();
方法2 - 使用3rdParty Json Serializer
Jint接受POCO對象作為輸入,因此我們可以先將json轉換為POCO然后將其提供給Jint以獲得結果(對於此示例,我使用Json.net作為反序列化器)
var input = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
var result= engine
.SetValue("input", input)
.Execute("input.CONTRATE > 50 && input.SALINC < 50 && input.RETAGE > 50")
.GetCompletionValue().AsBoolean();
方法3 - 將JSON對象放在評估腳本中
或者正如Mr.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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.