2011-01-24 19 views
1

投稿者https://graph.facebook.com/331218348435 私は '会場'の情報を投稿したいと思います。どのように子ノード/辞書をpostArgsに挿入しますか?私は以下のように投稿された基本情報を得ることができます辞書<string、string> with child辞書

Facebook.FacebookAPI api = new Facebook.FacebookAPI(GetAccessToken(code)); 

Dictionary<string, string> postArgs = new Dictionary<string, string>(); 
postArgs["name"] = myEvent.Title; 
postArgs["description"] = myEvent.Content; 
postArgs["start_time"] = myEvent.DateStart; 
postArgs["end_time"] = myEvent.DateEnd; 
postArgs["location"] = myEvent.Location; //myEvent.City;//"; 
postArgs["page_id"] = "1234567"; 

// Dictionary<string, string> postVenue = new Dictionary<string, string>(); 
// postVenue["city"] = myEvent.City; 
// postVenue["state"] = myEvent.County; 
// postVenue["country"] = "United Kingdom"; 
// postVenue["latitude"] = myEvent.Latitude; 
// postVenue["longitude"] = myEvent.Longitude; 

// here I need to add postVenue to postArgs as a child. 

api.Post("/12345676788/events", postArgs); 

ありがとうございます。

答えて

1

ここでpostArgs内の辞書を削除することはできません。値の型がstringであると宣言しているからです。コード

Dictionary<string, string> postArgs = new Dictionary<string, string>() 

文字列型と値stringのキーがあることを示します。

Dictionary<string, Object> postArgs = new Dictionary<string, Object>() 

しかし、これは彼らが辞書を出るように値をキャストするためにあなたを必要とする:あなたは種類の混合物をstoreaできるようにしたい場合は、あなたのような何かをしたいと思います。

2

あなたのコードから、私はポストの署名があることを期待:

void Post(string, Dictionary<string,string>) 

その場合は、あなたがあなたの辞書(postVenue)をシリアライズし、辞書にシリアライズされた文字列を追加する必要があると思います。ポストを受け入れるコードはデシリアライズする必要がありますが、API上でメソッドを呼び出すので、あなたは、デシリアライズ情報を被呼パーティに供給できない可能性があります。

投稿された引数と引数を投稿するコードを使用するコードは管理していますか?

直列化のためのコードは次のようになります。

postArgs.Add("venues",venues); 

とdeseializationが、その後

var venues = postArgs["venues"] 
var postVenue = (from pair in venues.Split(',') 
       select pair.Split(':') 
       ).ToDictionary(pair => pair[0],pair=>pair[1]); 
次のようになります。あなたはそのようにようにそれを追加することができ

var pairs = postVenue.Select(pair=>pair.Key + ":" + Pair.Value).ToArray(); 
var venues = string.Join(",",pairs); 

関連する問題