2

この JSON 文字列を次のように構築しようとしています

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId(RegID)
                                  .WithJson(@"{""message"":"+Message+"}"));

これを実行するたびに、InvalidCastException was unhandled/Invalid JSON detected が発生します。エラーメッセージ。

ただし、次のことを行うと

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId(RegID)
                                  .WithJson(@"{""message"":""Hello World""}"));

それは完全にうまく機能します。

これを機能させる方法についてアイデアや提案があれば、大歓迎です。

ありがとう!

4

1 に答える 1

4

JSON を手動で作成しているため (実際にはそうすべきではありません)、Message含まれる JSON の部分に適切なフォーマットが含まれていることを確認する必要があります。

string Message = "Hello World";

文字列を囲む引用符を含まない JSON が生成されますが、これは無効です。すなわち:

{ "message" : Hello World }

手動で引用符を追加することもできますが、すべきことは JSON ライブラリを使用することです。.NET にはJavaScriptSerializerに単純なものがあります。Messageそれを使用すると、このようなことを行うことができ、適切なフォーマットが含まれているかどうかを心配する必要はありません。

var obj = new { message = "Hello World" };
var serializer = new JavaScriptSerializer();
var json = serializer.Serialize(obj);

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId(RegID)
                                            .WithJson(json));
于 2013-07-29T15:47:26.653 に答える