Tôi biết có một vài bài viết về Newtonsoft vì vậy hy vọng điều này không chính xác lặp lại ... Tôi đang cố gắng chuyển đổi dữ liệu JSON được trả về bởi API Kazaa thành một đối tượng tốt đẹp của một số loạiDeserializing JSON để .NET đối tượng bằng cách sử dụng Newtonsoft (hoặc LINQ to JSON có thể?)
WebClient client = new WebClient();
Stream stream = client.OpenRead("http://api.kazaa.com/api/v1/search.json?q=muse&type=Album");
StreamReader reader = new StreamReader(stream);
List<string> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(reader.Read().ToString());
foreach (string item in list)
{
Console.WriteLine(item);
}
//Console.WriteLine(reader.ReadLine());
stream.Close();
đó JsonConvert dòng chỉ là một trong những gần đây nhất mà tôi đã cố gắng ... tôi không hoàn toàn nhận được nó và đã hy vọng để loại bỏ một số động tác chân bằng cách hỏi các bạn. Ban đầu tôi đã cố gắng chuyển đổi nó thành một từ điển hay một cái gì đó ... và thực sự, tôi chỉ cần snag một vài giá trị trong đó để đánh giá tài liệu, có lẽ LINQ của Newtonsoft có thể là một lựa chọn tốt hơn? Suy nghĩ/Liên kết?
Dưới đây là một ví dụ về dữ liệu JSON trở lại:
{
"page": 1,
"total_pages": 8,
"total_entries": 74,
"q": "muse",
"albums": [
{
"name": "Muse",
"permalink": "Muse",
"cover_image_url": "http://image.kazaa.com/images/69/01672812 1569/Yaron_Herman_Trio/Muse/Yaron_Herman_Trio-Muse_1.jpg",
"id": 93098,
"artist_name": "Yaron Herman Trio"
},
{
"name": "Muse",
"permalink": "Muse",
"cover_image_url": "htt p://image.kazaa.com/images/54/888880301154/Candy_Lo/Muse/Candy_Lo-Muse_1.jpg",
"i d": 102702,
"artist_name": "\u76e7\u5de7\u97f3"
},
{
"name": "Absolution",
"permalink": " Absolution",
"cover_image_url": "http://image.kazaa.com/images/65/093624873365/Mus e/Absolution/Muse-Absolution_1.jpg",
"id": 48896,
"artist_name": "Muse"
},
{
"name": "Ab solution",
"permalink": "Absolution-2",
"cover_image_url": "http://image.kazaa.com/i mages/20/825646911820/Muse/Absolution/Muse-Absolution_1.jpg",
"id": 118573,
"artist _name": "Muse"
},
{
"name": "Black Holes And Revelations",
"permalink": "Black-Holes-An d-Revelations",
"cover_image_url": "http://image.kazaa.com/images/66/093624428466/ Muse/Black_Holes_And_Revelations/Muse-Black_Holes_And_Revelations_1.jpg",
"id": 48813,
"artist_name": "Muse"
},
{
"name": "Black Holes And Revelations",
"permalink": "Bla ck-Holes-And-Revelations-2",
"cover_image_url": "http://image.kazaa.com/images/86/ 825646911486/Muse/Black_Holes_And_Revelations/Muse-Black_Holes_And_Revelations_1 .jpg",
"id": 118543,
"artist_name": "Muse"
},
{
"name": "Origin Of Symmetry",
"permalink": "Origin-Of-Symmetry",
"cover_image_url": "http://image.kazaa.com/images/29/825646 912629/Muse/Origin_Of_Symmetry/Muse-Origin_Of_Symmetry_1.jpg",
"id": 120491,
"artis t_name": "Muse"
},
{
"name": "Showbiz",
"permalink": "Showbiz",
"cover_image_url": "http: //image.kazaa.com/images/68/825646182268/Muse/Showbiz/Muse-Showbiz_1.jpg",
"id": 60444,
"artist_name": "Muse"
},
{
"name": "Showbiz",
"permalink": "Showbiz-2",
"cover_imag e_url": "http://image.kazaa.com/images/50/825646912650/Muse/Showbiz/Muse-Showbiz_ 1.jpg",
"id": 118545,
"artist_name": "Muse"
},
{
"name": "The Resistance",
"permalink": "T he-Resistance",
"cover_image_url": "http://image.kazaa.com/images/36/825646864836/ Muse/The_Resistance/Muse-The_Resistance_1.jpg",
"id": 121171,
"artist_name": "Muse"
}
],
"per_page": 10
}
tôi đã làm một số đọc hơn và tìm thấy LINQ Newtonsoft để JSON là chính xác những gì tôi muốn ... sử dụng WebClient, Stream, StreamReader, và Newtonsoft ... Tôi có thể nhấn Kazaa cho dữ liệu JSON, trích xuất URL, tải xuống tệp và thực hiện tất cả trong bảy dòng mã! Tôi thích nó.
WebClient client = new WebClient();
Stream stream = client.OpenRead("http://api.kazaa.com/api/v1/search.json?q=muse&type=Album");
StreamReader reader = new StreamReader(stream);
Newtonsoft.Json.Linq.JObject jObject = Newtonsoft.Json.Linq.JObject.Parse(reader.ReadLine());
// Instead of WriteLine, 2 or 3 lines of code here using WebClient to download the file
Console.WriteLine((string)jObject["albums"][0]["cover_image_url"]);
stream.Close();
bài này được rất nhiều hits Tôi nghĩ rằng nó có thể hữu ích để bao gồm các bit "sử dụng" được thảo luận trong các ý kiến.
using(var client = new WebClient())
using(var stream = client.OpenRead("http://api.kazaa.com/api/v1/search.json?q=muse&type=Album"))
using (var reader = new StreamReader(stream))
{
var jObject = Newtonsoft.Json.Linq.JObject.Parse(reader.ReadLine());
Console.WriteLine((string) jObject["albums"][0]["cover_image_url"]);
}
Ví dụ về Slick, cảm ơn. Chỉ là một gợi ý: bạn có thể đã tắt điều này một cách ngắn gọn, nhưng vì 'WebClient',' Stream' và 'StreamReader' đều thực hiện' IDisposable', bạn có thể muốn thêm một số khối 'using' vào mã của bạn. – arcain
ah vâng, cuộc gọi tốt ... (ya đây thực sự chỉ là một ứng dụng giao diện điều khiển mà tôi đang chạy thật nhanh để nghiên cứu các tác vụ tôi sắp có) Bây giờ để nghiên cứu đoạn cuối của câu đố, mã hóa HLS + AES :) ugh ...lol –
+1 Cảm ơn bạn đã đăng ví dụ về Linq. Chính xác những gì tôi cần. –