jsonstream.Lengthが、次の試行中にSystem.NotSupportedException エラータイプの例外をスローしました。
HttpWebRequest jsonHTTPRequest = (HttpWebRequest)WebRequest.Create(jsonRequestURL);
jsonHTTPRequest.ContentType = "application/json; charset=utf-8";
HttpWebResponse jsonHTTPResponse = (HttpWebResponse)jsonHTTPRequest.GetResponse();
RootObject vikiRootObject = default(RootObject);
using (Stream jsonstream = jsonHTTPResponse.GetResponseStream())
{
//encoding encode = system.text.encoding.getencoding("utf-8");
DataContractJsonSerializer serializer =
new DataContractJsonSerializer(typeof(RootObject));
vikiRootObject = (RootObject)serializer.ReadObject(jsonstream);
}
Webclientでも試してみましたが、それでも同じエラーです。これは応答サイズが大きいためですか?
リクエストURLは次のとおりです: http ://www.viki.com/api/v2/channels.json
WebClient webClient = new WebClient();
RootObject vikiChannelData = default(RootObject);
webClient.OpenReadAsync(new Uri(jsonRequestURL), UriKind.RelativeOrAbsolute);
webClient.OpenReadCompleted += (obj, Args) =>
{
//DataContractJsonSerializer vikiChannelerialized = new DataContractJsonSerializer(typeof(RootObject),null);
DataContractJsonSerializer vikiChannelerialized = new DataContractJsonSerializer(typeof(RootObject));
vikiChannelData = vikiChannelerialized.ReadObject(Args.Result) as RootObject;
Console.WriteLine();
};
編集: LINQで試しました:
var RootObjects = from vikiroot in vikiRootObject
select new Thumbnails2
{
thumbnails = vikiRootObject.thumbnails
};
しかし、エラーが発生しました。ソースタイプオブジェクトのクエリパターンの実装が見つかりませんでした。見つかりませんを選択します。
私のクラス構造は次のようなものです。
public class RootObject
{
public int id { get; set; }
public string title { get; set; }
public string description { get; set; }
public string uri { get; set; }
public List<Episode> episodes { get; set; }
public Thumbnails2 thumbnails { get; set; }
public string timestamp { get; set; }
public List<object> genres { get; set; }
public string origin_code { get; set; }
}
と
public class Thumbnails2
{
public string c_220_160 { get; set; }
public string c_102_102 { get; set; }
public string c_180_130 { get; set; }
public string c_110_80 { get; set; }
public string xl { get; set; }
public string large { get; set; }
public string medium { get; set; }
public string small { get; set; }
public string c_320_300 { get; set; }
public string c_640_600 { get; set; }
public string c_95_70 { get; set; }
public string c_190_140 { get; set; }
public string c_280_200 { get; set; }
public string c_560_400 { get; set; }
}