53837


Xamarin.iOSのJavaScriptCoreに関する質問です。

JSValueインスタンスのもつプロパティ名の一覧を取得したいです。

以下のJSを`JSContext`に読み込ませたとします。

[code]

    var test = {
      a: 1,
      b: "bです",
      c: [12, 13, 14]
    }
    
[/code]

ここから`test`オブジェクトを取得することはできます。  
`JSValue test = context[(NSString)"test"]`

問題はここからで`test`オブジェクトのプロパティが動的でどんな名前かわからない時、そのプロパティを名前と値のペアで取得したいです。

名前が分かれば`JSValue.GetProperty(string key)`で値を取得できるので名前だけでも分かれば良いです。

重要なのは **名前と値のペア** なので`JSValue.GetValueAt(nuint index)`は使えません。

何か方法があれば教えていただきたいです。


CC BY-SA 4.0
2019-03-29T06:19:41.440
53797
2019-03-31T08:09:42.813
31396
question
ios c# xamarin
JSValueがもつプロパティ名の一覧を取得したい


`test`に与えられた値が、ご質問に記載されたようなもの(JavaScriptのobject)であれば、`ToDictionary()`メソッドで辞書型に変換してしまえば良いのではないでしょうか?

[code]

            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");
            }
    
[/code]

`dict`は`NSDictionary`型になるので、その他の[`NSDictionary`型](https://docs.microsoft.com/en-
us/dotnet/api/foundation.nsdictionary?view=xamarin-ios-sdk-12)のメソッドを使うことも出来ます。


CC BY-SA 4.0
2019-03-31T08:09:42.813
53837
2019-03-31T08:09:42.813
13972
53797
answer