3

Windows Phone 7.1 (Mango RC) で DataContractJsonSerializer を使用して、Web サービスからデータを取得しています。私の Web サービスからのデータは次のようになります。

[
  {
    "Color":"\"black\"",
    "CurrentPlayerTurn":1,
    "GameId":"\"3adbffa7b5744634aca0e4b743014247\"",
    "GameState":0,
    "OtherPlayerId":null
  },
  {
    "Color":"\"black\"",
    "CurrentPlayerTurn":1,
    "GameId":"\"a292247719e34811a93598d2ff3eb13c\"",
    "GameState":0,
    "OtherPlayerId":"\"shmoebob\""
  }
]

ご参考までに、このデータは CouchDB の map/reduce クエリの下流にあり、その出力は次のようになります。

{"total_rows":4,"offset":1,"rows":[
{"id":"3adbffa7b5744634aca0e4b743014247","key":"kotancode","value":[0,1,"black",null]},
{"id":"a292247719e34811a93598d2ff3eb13c","key":"kotancode","value":[0,1,"black","shmoebob"]}
]}

私の WP7.1 クライアントで何が起こっているかというと、JSON の最初のブロブからオブジェクト配列を逆シリアル化すると、文字列内の引用符が実際に取得され、プロパティごとに手動で取り除く必要があります。

私の WP7.1 クライアントがヒットしている Web サービスは v0.5 WCF Web API RESTful サービスであり、そのデータを JSON として公開しています。

このパイプラインのどこかで、引用符が文字通り扱われる原因となっている何か間違っていることがありますか...または、DataContractJsonSerializerで実際に引用符を与えないようにするためにできることはありますか?

4

1 に答える 1

4

これはいつも私に起こります..質問を投稿するとすぐに、答えがわかります。問題は、JsonValue を使用して CouchDB からの情報を解析する方法にありました。

間違った方法:

string color = (row["value"] as JsonArray)[2].ToString(); // this embeds double-quotes

正しい方法:

string color = (row["value"] as JsonArray)[2].ReadAs<String>(); // this doesn't embed double-引用符。

これが同じ問題に遭遇する可能性のある他の誰かに役立つことを願っています...

于 2011-09-25T13:22:44.420 に答える