2

Windows8開発で使用するwinmdファイルを作成しています。優れたJavaScript(WinJS)エクスペリエンスを実現したいのですが、生のJSON以外のメソッドを使用する方法を理解できません。たとえば、開発者にWinJSで次のようにコーディングしてもらいたいと思います。

bar.foo({ bar: 19 })

そして私のC#ライブラリの中に私はこのようなものを持っているでしょう

public sealed class Bar
{
    public void Foo(JsonObject jsonObject)
    {

これはコンパイルされますが、WinJSからfooを呼び出そうとすると、メソッドのシグネチャが無効であるというエラーが表示されます。これは、「管理対象」タイプのWindows.Data.Json.JsonObjectを公開しているためだと思います。

WinJSの世界から.NET(WinMD内)に渡されたJSONをどのように操作できるかについてのアイデア。

4

3 に答える 3

1

少なくとも開発者プレビューでは、それは不可能だと思います。

objectWinRT を介して JS 形式から .Net 形式に変換できるオブジェクトはすべて通過できるという前提で、パラメータを持つ C# メソッドを作成しました。

また、配列に対しても機能します。JS 配列は として渡されobject[]ます。しかし、JSON オブジェクトを渡そうとすると、「型の不一致」エラーがスローされます。だからこそ無理だと思います。

functionを使用しWinJS.Class.define()作成されたオブジェクトも試しましたが、それも機能しませんでした。

于 2012-02-08T18:38:02.297 に答える
-1

私も Windows 8 で起動しており、午前中は JSON の解析に苦労しました。 このリンクにより、JSON 文字列を Windows.Data.Json.JsonObject に逆シリアル化できるようになりました。

ここに私が巻き上げたコードがあります:

        HttpResponseMessage response = await Client.SendAsync(RequestMessage);
        response.EnsureSuccessStatusCode();
        string json = response.Content.ReadAsString();
        ResponseObject = new JsonObject(json);

独自のデータ型に逆シリアル化したい場合は、System.Runtime.Serialization.Json.DataContractJsonSerializer を試すことができます。私はそれであまり運がありませんでした。ReadObject() メソッドから null が返され続け、診断情報を取得する方法がわかりませんでした。

于 2012-02-01T23:16:00.803 に答える