从JSON获取数据时出现混乱

时间:2012-02-02 09:56:37

标签: c# asp.net json

我正在尝试使用一个以json格式返回所需数据的Web服务。现在我的实际观点是我可以从字符串中的特定Web服务URL获取数据。

  string url= @"http://api.oodle.com/api/v2/listings?key=TEST&region=chicago&category=vehicle&format=json";

  string jsonString = new WebClient().DownloadString(url);

现在重点是我以字符串形式获取数据(采用JSON格式)。但我不知道如何将字符串转换为JSON字符串以及如何从该字符串中获取数据。

让我举个例子让你轻松理解

如果我的jsonString就像

{
   "current":{
      "region":{
         "id":"chicago",
         "name":"Chicago"
      },
      "category":{
         "id":"vehicle",
         "name":"Cars & Vehicles",
         "abbrev":"Vehicles"
      },
      "start":1,
      "num":10
   }
}

如何从该字符串中获取region_name?希望你能理解我 !尝试使用Test Link

2 个答案:

答案 0 :(得分:6)

添加对System.Web的引用,然后添加到使用部分

using System.Web.Script.Serialization;

然后(使用您的示例json字符串)

string jsonString = "{\"current\":{\"region\":{\"id\":\"chicago\",\"name\":\"Chicago\"},\"category\":{\"id\":\"vehicle\",\"name\":\"Cars & Vehicles\",\"abbrev\":\"Vehicles\"},\"start\":1, \"num\":10}}";

JavaScriptSerializer serializer = new JavaScriptSerializer();

CurrentRecord currentRecord = serializer.Deserialize<CurrentRecord>(jsonString);

string regionName = currentRecord.current.region.name;

还要将以下类添加到项目中:

[Serializable]
public class CurrentRecord
{
    public current current;
}

[Serializable]
public class current
{
    public region region;
    public category category;
    public int start;
    public int num;
}

[Serializable]
public class region
{
    public string id;
    public string name;
}

[Serializable]
public class category
{
    public string id;
    public string name;
    public string abbrev;
}

答案 1 :(得分:1)

您是在处理Java或JavaScript中的JSON返回字符串吗?

如果您正在使用Java处理JSON响应字符串,则可以使用GSON。这是一个教程,向您展示如何:Parsing a JSON String into an object with GSON easily

对于您的情况,您需要一个类:

class Current{
  private Region region;
  private Category category;
  private int start;
  private int num;

  // getters and setters

  class Region{
    private String id;
    private String name;

    // getters and setters
  }

  class Category{
    private String id;
    private String name;
    private String abbreviation;

    // getters and setters
  }
}

否则,如果您在Javascript中处理此JSON响应字符串,那么您可以查看:http://www.json.org/js.html

alert(jsonReturnString.current.region.name);