2011-09-25 4 views
3

Windows Phone 7.1 (Mango RC)에서 DataContractJsonSerializer를 사용하여 웹 서비스에서 데이터를 가져옵니다.문자열에 따옴표를 남기는 DataContractJsonSerializer

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

무엇이다 :/출력이 다음과 같습니다, 쿼리를 줄이고 당신이 궁금해하는 경우

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

는,이 데이터는 CouchDB를지도의 하류

: 내 웹 서비스의 데이터는 다음과 같습니다 내 WP7.1 클라이언트에서 일어나는 일은 JSON의 첫 번째 BLOB에서 객체 배열을 비 직렬화 할 때 실제로 문자열 내부의 따옴표를 가져오고 속성별로 속성을 수동으로 제거해야한다는 것입니다.

내 WP7.1 클라이언트가 타격을 가하는 웹 서비스는 v0.5 WCF 웹 API RESTful 서비스이며이 데이터를 JSON으로 공개하고 있습니다.

어딘가에이 파이프 라인에서 말 그대로 처리해야하는 뭔가 잘못 되었나요? 아니면 DataContractJsonSerializer로 실제로 따옴표를 사용하지 못하게 할 수 있습니까?

답변

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- 따옴표.

희망 사항은 동일한 문제가 될 수있는 다른 사용자에게 도움이되기를 바랍니다.

관련 문제