DataContractJsonSerializer оставляя кавычки в строках - PullRequest
3 голосов
/ 25 сентября 2011

Я использую DataContractJsonSerializer на Windows Phone 7.1 (Mango RC) для извлечения данных из веб-службы.Данные из моего веб-сервиса выглядят так:

[
  {
    "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, так это то, что когда я десериализирую массив объектов из первого BLOB-объекта JSON, я фактически получаю кавычки внутри строк, и мне приходится вручную вырезать их свойство по свойству.

Веб-служба, к которой подключается мой клиент WP7.1, - это служба RESTful веб-API WCF v0.5, и я представляю эти данные как JSON.

Есть ли что-то, что я где-то делаю неправильнов этом конвейере, который заставляет кавычки обрабатываться буквально ... или я могу что-то сделать с DataContractJsonSerializer, чтобы он не выдавал мне кавычки?

1 Ответ

4 голосов
/ 25 сентября 2011

Это происходит со мной все время .. как только я отправляю вопрос, я выясняю ответ.Проблема заключалась в том, как я использовал 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- цитаты.

Надеюсь, это поможет кому-то еще, кто может столкнуться с той же проблемой ...

...