0

このメッセージを MakeAction に手動で送信すると、機能し、メッセージ ボックスがポップアップします。

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 からのメッセージは、私が手動で作成したものとは少し異なります。

[{\"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; }
}

前もってありがとう、トーマス

4

1 に答える 1

1

わかりました、修正を提供するのではなく、私が使用するコードを提供します. 投稿したサンプル json は有効ではないことに注意してください。この部分を削除しています。\"13926740640746402\",\"chinese-jefecito\"] でActionオブジェクトの配列を閉じます。json で独自のキーを持つことはできません (どちらも値のないキーです)。また、オブジェクト内ではなく配列内にあります。とにかく、これが私が使用しているjsonです。

[{\"action\":\"turncompleted\",\"messageID\":\"123123123\",\"playerID\":\"100000067174580\",\"round\":1,\"answers\ ":[{\"経度\":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);
于 2014-02-17T22:15:19.037 に答える