如何使用Newtonsoft.Json从JSON Dictionary获取值

时间:2014-10-14 05:43:33

标签: c# json dictionary json.net

我是json的新手,我在这里遇到一些问题,我无法解决。

在其他json中我有{"certificate":"123456789",}并且我得到了使用的值。

model.cs

class Login //this code is working.
{
    [JsonProperty("certificate")]
    public string certificate { get; set; }
}

但我的问题是当我拿出json词典时我没有任何想法如何才能从中得到它的价值。

这是来自controller.cs的代码,用于从Saba / api / component / location获取json

using(var client = new HttpClient()) //I'm sure this code is working.
        {
            client.BaseAddress = new Uri(string.Format("https://{0}/", HostUrl));
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Add("SabaCertificate", certificate);
            //HTTP GET: /Saba/api/componet/location
            HttpResponseMessage response = await client.GetAsync("Saba/api/component/location");
            if(response.IsSuccessStatusCode)
            {

                Location saba = await response.Content.ReadAsAsync<Location>();
                //I always get empty location when I try to run the app.
            }
        }

这是带字典的JSON。

{
"results": [
    {
        "loc_name": "Aberdeen - Aberdeen Town Square_489",
        "id": "locat000000000001877",
        "href": "https://na1.sabacloud.com/Saba/api/component/location/locat000000000001877"
    }]

}

如何获取json字典的值?

我尝试的是

Model.cs

[JsonProperty("results")] \\ AggregateException Error
class Location
{
    [JsonProperty("loc_name")]
    public string loc_name { get; set; }

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

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

但我无法检索该值。

1 个答案:

答案 0 :(得分:0)

根据您问题中发布的JSON,您应该有类似

的内容
public class Result
{
    public string loc_name { get; set; }
    public string id { get; set; }
    public string href { get; set; }
}

public class RootObject
{
    public List<Result> results { get; set; }
}

然后打电话

var rootObject = JsonConvert.DeserializeObject<RootObject>(jsonData);

您始终可以使用JSON Formatter & Validator来测试您的JSON是否有效,并json2csharp从json生成c#类。