使用JINT从javascript文件中读取JSON对象

时间:2018-04-09 11:29:58

标签: javascript c# .net json jint

我已经提供了一个包含两个JSON对象的javascript文件,例如这个。

var languages = {"Languages":["English","Cymraeg","Deutsch"]};
var labels = [{"$JOB":["Job","Orchwyl","Auftrag",]},{"$JOB_NO":["Job Number","Rhiforchwyl","Auftragsnummer"]}];

我需要将两个JSON对象序列化为可以在.NET中操作的东西。我使用JINT从文件中获取这两个值。

Engine js = new Engine();
js.Execute(fileContents);
languages = js.GetValue("languages");
labels = js.GetValue("labels");

但我现在无法对这两个值做任何事情。我无法解析JSON,这些值只是作为一个奇怪的对象数组出现,我实际上无法确定这些值。

有关如何访问JSON对象的任何建议吗?

1 个答案:

答案 0 :(得分:1)

这里没有JSON。 这是javascript代码,在评估时创建javascript对象。

现在,您可以将该javascript对象转换为JSON字符串。 我找到的最简单的方法就是让JINT为我做,但我不是Jint的专家,可能有更好的方法。

// Run javascript, inside the interpreter, to create JSON strings
js.Execute("languages = JSON.stringify(languages)");
js.Execute("labels = JSON.stringify(labels)");
// Extract the strings from the JS environment, into your c# code as strings
// Now, you can deserialize them as normal JSON
var languagesJsonString = js.GetValue("languages").AsString();
var labelsJsonString = js.GetValue("labels").AsString();