2012-02-02 45 views
5

Tôi đang cố sử dụng một dịch vụ web trả về dữ liệu được yêu cầu ở định dạng json. Bây giờ điểm thực tế là tôi có thể lấy dữ liệu từ url dịch vụ web cụ thể trong chuỗi.Lẫn lộn khi tìm nạp dữ liệu từ JSON

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

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

Bây giờ, tôi lấy dữ liệu theo chuỗi (theo định dạng JSON). Nhưng tôi không biết làm thế nào để chuyển đổi chuỗi thành chuỗi JSON và làm thế nào để lấy dữ liệu từ chuỗi này.

Hãy để tôi cung cấp cho bạn ví dụ để bạn có thể dễ dàng hiểu được

nếu jsonString của tôi là như

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

Làm thế nào tôi có thể nhận REGION_NAME từ chuỗi đó? Hy vọng bạn hiểu tôi ! Hãy thử sử dụng Test Link!

+0

Là C# mã? –

+1

@ ŁukaszBachman Vâng! – Chintan

+2

http://stackoverflow.com/questions/401756/parsing-json-using-json-net –

Trả lời

6

Thêm một tham chiếu đến System.Web và sau đó thêm vào phần sử dụng của bạn

using System.Web.Script.Serialization; 

Sau đó (usin g dụ chuỗi json của bạn)

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; 

Ngoài ra thêm các lớp học sau đây để dự án của bạn:

[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; 
} 
+2

Hoặc bạn có thể sử dụng một số thư viện JSON của bên thứ ba, như JSON.Net. – svick

+1

JSON.net khá trơn tru, nhưng được giữ với System.Web.Script.Serialization cho câu hỏi này. –

+0

@NicholasMurray Tôi đã thử cách này! Hoàn toàn thành công! Cảm ơn bạn ! Nhưng tôi có một truy vấn, có cần khai báo lớp của bạn là 'Serializable' không? Bởi vì tôi đã thử mà không có 'Serializable' nhưng nó vẫn hoạt động tốt! Vậy mục đích khai báo 'Serializable' là gì? – Chintan

1

Bạn có đang xử lý chuỗi trả về JSON bằng Java hoặc JavaScript không?

Nếu bạn đang xử lý chuỗi phản hồi JSON trong Java, bạn có thể sử dụng GSON. Dưới đây là hướng dẫn cho bạn biết cách thực hiện: Parsing a JSON String into an object with GSON easily.

Đối với trường hợp của bạn, bạn cần một lớp học như:

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 
    } 
} 

khác nếu bạn đang chế biến này Chuỗi phản ứng JSON trong Javascript, sau đó bạn có thể có một cái nhìn lúc này: http://www.json.org/js.html

alert(jsonReturnString.current.region.name); 
+0

_____in ASP .NET !! – Chintan