如何用c#解析网址中的Json内容?

时间:2014-12-06 20:44:10

标签: c# json json.net

我举了一个例子:

public class Test
{
    [JsonProperty(PropertyName = "test1")]
    public String Test1 { get; set; }

    [JsonProperty(PropertyName = "test2")]
    public String Test2 { get; set; }
}

private string url = "http://sample.php";
private List<Test> TestList = new List<Test>();

private async Task<Test> getTestObjects()
{
    var httpClient = new HttpClient();
    var response = await httpClient.GetAsync(url);
}

如何将url链接中的Test对象导入TestList? 它与阅读XML是一样的吗?

2 个答案:

答案 0 :(得分:2)

解析json的最佳方法是Json.NET

string json = @"{
  'Name': 'Bad Boys',
  'ReleaseDate': '1995-4-7T00:00:00',
  'Genres': [
    'Action',
    'Comedy'
  ]
}";

Movie m = JsonConvert.DeserializeObject<Movie>(json);

string name = m.Name;
// Bad Boys

我尝试使用此代码并运行:

void Main()
{
    var test = Newtonsoft.Json.JsonConvert.DeserializeObject<Test>(getTestObjects().Result).Dump();

    // test.MyName; 'Bad Boys'
    // test.ReleaseDate; '1995-4-7T00:00:00'
}

public class Test
 {   
     [JsonProperty("Name")]
     public String MyName { get; set; }
     public String ReleaseDate { get; set; }
 }

 private string url = "http://bitg.ir/files/json.txt";
 private List<Test> TestList = new List<Test>();

 private async Task<String> getTestObjects()
 {
     var httpClient = new HttpClient();
     var response = await httpClient.GetAsync(url);
     var result = await response.Content.ReadAsStringAsync();

     return result;
 }

答案 1 :(得分:2)

将这些步骤半自动化的快速简便方法是:

  1. 获取您要解析的JSON并将其粘贴到此处:program to an interface然后将结果复制并粘贴到visual studio中的新类(例如:MyClass)中。
  2. 重命名&#34; RootObject&#34;在json2csharp输出到&#34; MyClass&#34;或者你称之为的任何东西。
  3. 在visual studio中访问网站 - &gt;管理包并使用NuGet从Newtonsoft添加Json.Net。
  4. 现在使用以下代码:

    WebClient client = new WebClient();
    
    string myJSON = client.DownloadString("https://URL_FOR_JSON.com/JSON_STUFF");
    
    var myClass = Newtonsoft.Json.JsonConvert.DeserializeObject(myJSON);