需要帮助从JSON键/值对中获取特定值

时间:2016-04-19 18:10:41

标签: c# json httprequest

我从第三方API中提取数据并为自己提供一些看起来像这样的代码......

public partial class Form1 : Form
{
    int playSystem = 2;
    string playID = "";

    public Form1()
    {
        InitializeComponent();
    }

    private void xBox_CheckedChanged(object sender, EventArgs e)
    {
        playSystem = 1;
    }

    public void playstation_CheckedChanged(object sender, EventArgs e)
    {
        playSystem = 2;
    }

    private async void searchButton_Click(object sender, EventArgs e)
    {
        statDisplay.Clear();

        var userName = nameBox.Text;

        using (var client = new HttpClient())
        {
            client.DefaultRequestHeaders.Add("X-API-KEY", "xxxxxxxxxxxxxxxx");

            var response = await client.GetAsync("https://bungie.net/platform/Destiny/SearchDestinyPlayer/" + playSystem + "/" + userName);
            var content = await response.Content.ReadAsStringAsync();
            dynamic item = Newtonsoft.Json.JsonConvert.DeserializeObject(content);

            statDisplay.AppendText(item.ToString());
        }
    }
}

我不想将对象中的所有信息显示为字符串,而是希望从该对象中获取特定值,将其存储到变量中,并在另一个HTTPRequest中使用该变量。

我得到的输出看起来像这样......

{
  "Response": [
    {
      "iconPath": "/img/theme/destiny/icons/icon_psn.png",
      "membershipType": 2,
      "membershipId": "01234567890",
      "displayName": "xxxxxxxxxx"
    }
  ],
  "ErrorCode": 1,
  "ThrottleSeconds": 0,
  "ErrorStatus": "Success",
  "Message": "Ok",
  "MessageData": {}
}

我想特别关注membershipId键/值。

2 个答案:

答案 0 :(得分:0)

var membershipId = (string)item.Response[0].membershipId;

答案 1 :(得分:-1)

我认为你想要做的事情可以在Newtonsoft的文档

中找到

http://www.newtonsoft.com/json/help/html/LINQtoJSON.htm

在这个例子中,他们使用linq来查找Object上的特定内容,但你也可以通过返回对象中的每个元素For Each。