使用Jint从C#返回的Javascript访问JSON数组项
我试图使用Jint在C#和Javascript之间来回通信。基本上是一帆风顺的,但是我无法在JS脚本中访问从C#返回的数组中的项目。访问返回对象上的属性可以正常工作,但访问数组项总是返回null 下面是我设置Jint引擎并执行Javascript的C#代码使用Jint从C#返回的Javascript访问JSON数组项,javascript,c#,json,.net,jint,Javascript,C#,Json,.net,Jint,我试图使用Jint在C#和Javascript之间来回通信。基本上是一帆风顺的,但是我无法在JS脚本中访问从C#返回的数组中的项目。访问返回对象上的属性可以正常工作,但访问数组项总是返回null 下面是我设置Jint引擎并执行Javascript的C#代码 public class Runtime { public dynamic fetch() { var json = @"{ 'firstName': 'Anakin',
public class Runtime
{
public dynamic fetch()
{
var json = @"{
'firstName': 'Anakin',
'age': 100,
'kids': ['Luke', 'Leia']
}";
var results = JsonConvert.DeserializeObject(json);
return results;
}
}
// setup jint engine
var engine = new Engine();
engine.SetValue("runtime", new Runtime());
// execute JS script (see below)
engine.Execute(script);
正在执行的Javascript如下所示:
var graph = runtime.fetch();
// accessing simple properties like this works fine
var fname = graph.firstName;
var age = graph.age;
// however, accessing array items returns null
// note: i can get the array, but not the items in the array
var firstKid = graph.kids[0]; //returns null?!
注意:我意识到我可以从C#返回一个字符串,然后从Javascript调用JSON.parse(…),但我试图避免额外的步骤
非常感谢您的帮助。谢谢。我对for…in循环也有同样的问题。当我尝试循环使用从C#生成的对象的属性时,它不起作用。您尝试过NuGet的3.x预览版本吗?我对for…in循环也有同样的问题。当我尝试循环从C#生成的对象的属性时,它不起作用。您尝试过NuGet的3.x预览版本吗?