1

だから私は DataContractJsonSerializer を使用して Flickr からいくつかの JSON データを解析しようとしています。

jsonFlickrApi({"photos":{"page":1, "pages":372738, "perpage":10, "total":"3727375", "photo":[{"id":"9578613971", "owner":"7960563@N07", "secret":"b7b80b75f8", "server":"3734", "farm":4, "title":"1970 - 1978 Toyota Corolla E20 Coup\u00e9", "ispublic":1, "isfriend":0, "isfamily":0, "url_t":"http:\/\/farm4.staticflickr.com\/3734\/9578613971_b7b80b75f8_t.jpg", "height_t":"67", "width_t":"100", "url_o":"http:\/\/farm4.staticflickr.com\/3734\/9578613971_0eda23bccb_o.jpg", "height_o":"1000", "width_o":"1500"}}]}, "stat":"ok"})

しかし、代わりに Jsonserializer を使用して解析しようとすると、何も含まれていないことに気付きます。

Json2Cshap.com のおかげで、コントラクト クラスによって確立されました。

public class ResponseContract
{
    [DataContract]
    public class Photo
    {
        [DataMember]
        public string id { get; set; }

        [DataMember]
        public string owner { get; set; }

        [DataMember]
        public string secret { get; set; }

        [DataMember]
        public string server { get; set; }

        [DataMember]
        public int farm { get; set; }

        [DataMember]
        public string title { get; set; }

        [DataMember]
        public string url_t { get; set; }

        [DataMember]
        public string url_o { get; set; }
    }

    [DataContract]
    public class Photos
    {
        [DataMember]
        public int page { get; set; }

        [DataMember]
        public int pages { get; set; }

        [DataMember]
        public int perpage { get; set; }

        [DataMember]
        public string total { get; set; }

        [DataMember]
        public List<Photo> photoList { get; set; }
    }
    [DataContract]
    public class RootObject
    {
        [DataMember]
        public Photos photos { get; set; }
        [DataMember]
        public string stat { get; set; }
    }

そして、私のコードは次のようになります。

            // Creates an HttpWebRequest with the specified URL. 
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(this.longUrl);

        // Send the request and wait for response.          
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        // Get the response stream
        Stream responseStream = response.GetResponseStream();

        DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(Photos));
        object objResponse = (Photos)jsonSerializer.ReadObject(responseStream);

        Photos jsonResponse = objResponse as Photos;

        response.Close();

しかし、jsonResponse では何も得られません

msdn.microsoft.com/en-us/library/hh674188.aspx からコードの一部を入手しました。この手順を実行するための少しの助けをいただければ幸いです。

4

1 に答える 1

2

JSON の先頭から「jsonFlickrApi(」を削除し、末尾から「)」を削除してみてください。

JavaScriptを使用して応答を解析していないため、ここでは必要のないコールバックパラメーターをAPIに送信していると思います

于 2013-08-24T09:40:17.750 に答える