2

使用 C# 和 Visual Studio 2010(Windows 窗体项目)、InstaSharp 和 Newtonsoft.Json 库。

当我请求特定主题标签时,我想从Endpoint Instagram API返回给我的 JSON 字符串中获取图像 url 。

到目前为止,我可以检索 JSON 字符串。

我正在尝试使用Newtonsoft.Json使用示例反序列化对象,但我可能无法正确理解对象的 JSON 字符串表示。

下面是我从他们的文档response中的 api 调用中获得的简化示例。来源这里tags/tag-name/media/recent

{
    "data": [{
        "type": "image",
        "filter": "Earlybird",
        "tags": ["snow"],
        "comments": {
        }
        "caption": {
        },
        "likes": {
        },
        "created_time": "1296703536",
        "images": {
            "low_resolution": {
                "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_6.jpg",
                "width": 306,
                "height": 306
            },
            "thumbnail": {
                "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_5.jpg",
                "width": 150,
                "height": 150
            },
            "standard_resolution": {
                "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_7.jpg",
                "width": 612,
                "height": 612
            }
        },
        "id": "22699663",
        "location": null
    },
    ...
    ]
}

我想特别了解其中standard_resolutionimages一部分。

这是我目前拥有的相关代码。

//Create the Client Configuration object using Instasharp
var config = new InstaSharp.Endpoints.Tags.Unauthenticated(config);

//Get the recent pictures of a particular hashtag (tagName)
var pictures = config.Recent(tagName);

//Deserialize the object to get the "images" part
var pictureResultObject = JsonConvert.DeserializeObject<dynamic>(pictureResult.Json);
            consoleTextBox.Text = pictureResult.Json;
            var imageUrl = pictureResultObject.Data.Images;
            Console.WriteLine(imageUrl);

我得到错误:Additional information: Cannot perform runtime binding on a null reference

所以imageUrl当我调试时确实为空,因此表明我没有以正确的方式访问它。

任何人都可以向我解释如何使用Newtonsoft.Json访问这个 JSON 字符串的不同部分?

4

2 回答 2

5

使用 Newtonsoft.Json

dynamic dyn = JsonConvert.DeserializeObject(json);
foreach (var data in dyn.data)
{
    Console.WriteLine("{0} - {1}",
            data.filter,
            data.images.standard_resolution.url);
}
于 2012-12-05T18:39:01.033 回答
1

我为 .net 编写了一个插件,负责反序列化 json 字符串并返回数据表。它仍在开发中,但看看它是否有帮助。Github 上的 Instagram.NET

于 2013-07-30T14:27:22.647 回答