如何解析Windows Phone 7的以下JSON?

时间:2010-11-16 19:15:20

标签: c# .net json windows-phone-7 arrays

我有一个JSON结果,其中包含一系列消息:

{
  "messages": [
    {
      "message": {
        "for_user_login": null,
        "message_type": "normal",
        "twitter_in_reply_to_screen_name": null,
        "avatar_url": "http://a2.twimg.com/profile_images/82661470/marshallwithhatbig_normal.jpg",
        "created_at": "2010-11-16T18:50:33Z",
        "body": "Watch the Web 2.0 Summit Live on Video, for Free: http://me.lt/24mH (tickets cost $Ks, content is good)",
        "filtered": false,
        "future": false,
        "in_reply_to_user_login": null,
        "twitter_user_id": 818340,
        "updated_at": "2010-11-16T18:50:33Z",
        "user_login": "marshallk",
        "group_ids": null,
        "stock_ids": "8030",
        "twitter_created_at": "2010-11-16T18:50:27Z",
        "id": 2124647,
        "mention_ids": null,
        "twitter_in_reply_to_user_id": null,
        "platform_user_login": null,
        "twitter_status_id": 4607245530697728,
        "user_id": null,
        "for_user_id": null,
        "recommended": false,
        "private_relations": false,
        "investor_relations": false,
        "forex": false,
        "in_reply_to_user_id": null,
        "stock_symbols": "KS",
        "twitter_in_reply_to_status_id": null,
        "twitter_source": "<a href=\"http://rockmelt.com\" rel=\"nofollow\">RockMelt</a>",
        "chart": false,
        "in_reply_to_message_id": null,
        "message_source": "twitter"
      }
    }
}

这是我的代码:

void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {

            using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(e.Result)))
            {
                JsonObject messages = (JsonObject)JsonObject.Load(stream);
                MessageBox.Show(messages.ToString(), "Data Passed", MessageBoxButton.OK);
            }
        }
    }

我不确定如何提取嵌套在根JSON对象中的JSON对象?

我也试过没有运气:

 JsonObject jsonString = (JsonObject)JsonObject.Parse(e.Result);
            JsonArray messages = (JsonArray)jsonString["messages"]["message"];

            foreach (JsonObject message in messages)
            {
                foreach (string body in message.Keys)
                {
                    Debug.WriteLine(body);
                    Debug.WriteLine(message[body]);
                }
            }

3 个答案:

答案 0 :(得分:2)

var list = messages["messages"];

我可能会将您的messages变量重命名为data,以便更具描述性。

P.S。我从未见过我的姓氏作为名字!

答案 1 :(得分:2)

为什么不直接使用JsonObject.Parse(e.Result)

您无需使用Encoding.UTF8.GetBytesMemoryStream

然后你可以按照@John的说明从JSON对象中获取数据。

答案 2 :(得分:1)

使用http://json2csharp.com/获取csharp对象并使用序列化/反序列化JSON数据。