2014-02-17 94 views
0

當我在此消息MakeAction手動發送它的工作原理和消息框彈出:JsonConvert.DeserializeObject從PubNub消息

string json = @"{'action':'turncompleted', 'messageID':'123123123', 'playerID':'100000067174580', 'round':1, 'values':[{'longitude':21.09375, 'latitude':24.527134822598}, {'longitude':1.40625, 'latitude':23.885837699862}]}"; 

public void MakeAction(string message) 
    { 
     Poker_Server_v4_0.Action a = JsonConvert.DeserializeObject<Poker_Server_v4_0.Action>(message);    
     System.Windows.Forms.MessageBox.Show(a.action + a.messageID); 
    } 

但是當我使用的消息從PubNub它不工作:

static void DisplaySubscribeReturnMessage(string result) 
    { 
     //Receives the message from Pubnub takes care of the Action. 
     MessageToAction MTA = new MessageToAction(); 
     MTA.MakeAction(result); 
    } 

從PubNub消息differes從我手動創建的一點點:

[{\"action\":\"turncompleted\",\"messageID\":\"123123123\",\"playerID\":\"100000067174580\",\"round\":1,\"answers\":[{\"longitude\":21.09375,\"latitude\":24.527134822598},{\"longitude\":1.40625,\"latitude\":23.885837699862}]},\"13926740640746402\",\"chinese-jefecito\"] 

我試圖刪除括號和斜槓文本,但隨後「價值」值的斜線也取代了。

我想知道我在做什麼錯在這裏?

這裏是動作類以及:

class Action 
{ 

    [JsonProperty("action")] 
    public string action { get; set; } 

    [JsonProperty("messageID")] 
    public string messageID { get; set; } 

    [JsonProperty("gameID")] 
    public string gameID { get; set; } 

    [JsonProperty("invitorFacebookID")] 
    public string invitorFacebookID { get; set; } 

    [JsonProperty("gametype")] 
    public string gametype { get; set; } 

    [JsonProperty("numberOfPlayers")] 
    public string numberOfPlayers { get; set; } 
    //public List<string> longitude { get; set; } 
    //public List<string> latitude { get; set; } 
    //public List<string> values { get; set; } 

    [JsonProperty("players")] 
    public List<Players> players { get; set; } 

    //Should be empty and removed! 
    [JsonProperty("values")] 
    public List<Value> values { get; set; } 


    public Action() { } 

} 

class Players 
{ 
    //Players 
    [JsonProperty("playerID")] 
    public string playerID { get; set; } 

    [JsonProperty("facebookID")] 
    public string facebookID { get; set; } 
} 

class Value 
{ 
    //Answers 
    [JsonProperty("longitude")] 
    public string longitude {get; set;} 

    [JsonProperty("latitude")] 
    public string latitude { get; set; } 
} 

由於提前, 托馬斯

回答

1

好的,而不是提供更正我只是給你,我會使用的代碼。請注意,您發佈的示例json無效。我正在刪除這部分; \「13926740640746402 \」,\「chinese-jefecito \」]並在那裏關閉Action對象的數組。你不能在json中擁有自己的鍵(這兩個鍵都沒有值),而且它們在數組中,而不是在一個對象中。無論如何,這裏是我使用的JSON; \ \「\」:\「turncompleted \」,\「messageID \」:\「123123123 \」,\「playerID \」:\「100000067174580 \」,\「round \」:1, \ 「答案\」:[{\ 「經度\」:21.09375,\ 「緯度\」:24.527134822598},{\ 「經度\」:1.40625,\ 「緯度\」:23.885837699862}]}]

public class Action 
{ 
    public string action { get; set; } 
    public string messageID { get; set; } 
    public string round { get; set; } 
    public Answer[] answers { get; set; } 
} 

public class Answer 
{ 
    public string longitude { get; set; } 
    public string latitude { get; set; } 
} 




Action[] actions = JsonConvert.DeserializeObject<Action[]>(jsonString); 
+0

感謝您的協助。我將它改爲Poker_Server_v4_0.Action [] a = JsonConvert.DeserializeObject (message);但它仍然不起作用。我在公共Action(){}上有一個斷點,當我使用Action []而不是Action時觸發它,然後它停止。它不會給我一個錯誤信息或任何東西,它只是停止。 – Jefecito

+0

@ user2524586好吧,我注意到其他奇怪的東西。我剛剛更新了從頭開始編寫的代碼。我不得不改變你的json片段,因爲它不是有效的json。 – evanmcdonnal

+0

我其實注意到了。我將檢查PubNub C#示例以查看它們是否有推薦的方式來檢索郵件。再一次,非常感謝。 – Jefecito