gpt4 book ai didi

javascript - 如何使用 JINT 库从 Javascript 获取 JSON 值

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:40 24 4
gpt4 key购买 nike

我有这个 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 对象字符串获取“输入”变量的 JSON 值?

最佳答案

我相信我们可以通过 3 种方式实现预期的结果

方法 1 - 使用 Jint 的内置解析器

Jint 有内置的解析器来支持 javascript 的 JSON.parseJSON.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 序列化程序

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 对象放入评估脚本

或者正如 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();

关于javascript - 如何使用 JINT 库从 Javascript 获取 JSON 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29541574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com