如何在JSValue中获取应用ToObject()的属性?

问题描述 投票:1回答:2

我在我的Xamarin.iOS开发的程序中使用JavaScriptCore。我想在JSValue实例中获取属性名称。

我试过JSValue.GetPropertyJSValue.GetValueAt。但这些方法只能获得属性值。我只是想知道JSValue实例中有哪些属性。

这是样品,

var test = {
  a: 12,
  b: "this is b."
  c: [1, 2, 3]
}

我可以通过test获得JSValue.GetProperty(string key)对象。

但无法从a对象获得bctest

我该怎么办 ?

c# xamarin.ios
2个回答
2
投票

但无法从测试对象获得a,b,c。

您可以使用for循环和hasOwnProperty方法获取所有键。如下所示:

var test = {
  a: 12,
  b: "this is b."
  c: [1, 2, 3]
}
var keys1 = [];
for (var p1 in test ) {
    if (test.hasOwnProperty(p1))
        keys1.push(p1);
}
alert(keys1); // a,b,c

这个问题似乎与Xamarin无关,下次你可以用JS Tags来问这个问题。


1
投票

我得到了答案Here

if (test.IsObject)
{
    var dict = test.ToDictionary();
    var keys = dict.Keys;
    foreach( var key in keys)
    {
        Console.WriteLine(key+":"+dict[key]);
    }
}
else
{
    Console.WriteLine("`test` is not an object");
}

使用ToDictionary()方法来JSValue(NSObject)。

我可以使用test对象作为NSDictionary

© www.soinside.com 2019 - 2024. All rights reserved.