【问题标题】:DataContractJsonSerializer leaving quotes in stringsDataContractJsonSerializer 在字符串中留下引号
【发布时间】:2011-09-25 21:22:44
【问题描述】:

我在 Windows Phone 7.1 (Mango RC) 上使用 DataContractJsonSerializer 从 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 的第一个 blob 中反序列化对象数组时,我实际上是在字符串中获取引号,我不得不逐个属性地手动将它们剥离。

我的 WP7.1 客户端正在访问的 Web 服务是 v0.5 WCF Web API RESTful 服务,我将该数据公开为 JSON。

我在这个管道中的某个地方做错了什么导致引号被逐字处理......或者我可以用 DataContractJsonSerializer 做些什么来让它实际上不给我引号?

【问题讨论】:

    标签: json couchdb windows-phone-7.1 wcf-web-api


    【解决方案1】:

    这一直发生在我身上。我一发布问题,我就想出了答案。问题在于我如何使用 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-quotes。

    希望这对可能遇到相同问题的其他人有所帮助...

    【讨论】:

      猜你喜欢
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-22
      • 2013-12-13
      • 1970-01-01
      • 2010-09-09
      相关资源
      最近更新 更多