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

时间:2019-03-29 09:12:15

标签: c# xamarin.ios

我在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

我该怎么办?

2 个答案:

答案 0 :(得分: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 标签问这个问题。

答案 1 :(得分: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