我在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 blob反序列化对象数组时,我实际上是在字符串中得到引号,我不得不手动将它们从属性中删除。 / p>
我的WP7.1客户端正在访问的Web服务是v0.5 WCF Web API RESTful服务,我将这些数据公开为JSON。
在这个管道中的哪个部分我做错了导致引号被字面处理......或者我可以用DataContractJsonSerializer做些什么来让它实际上没有给我引号?
答案 0 :(得分: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-
引号。
希望这能帮助可能遇到同样问题的其他人......