c#如果Web链接上不存在ID值,则从列表中删除对象

时间:2015-04-06 12:35:48

标签: c# json list object compare

我有一个函数可以获取Json中的所有Api link值,并将所有值反序列化为对象列表。我需要将ID value的{​​{1}}与all ID values listed here进行比较。但是,使用我使用的函数on the other Api link并不能像返回object list结构一样工作,这个结果不存在。

Json

上面代码调用

的函数
// parameters given are "http://www.gw2spidy.com/api/v0.9/json/item-search/iron/" + "1"
var spidyApi_idByName = api_Handler.objFromApi_idToName(spidyApiUrl, startPage);

如何检查spidyApi_idByName exist here中的ID值以及它们是否从对象列表中删除。

编辑,更一般的信息:

我有一个文本框,您可以在其中输入搜索内容。然后将其发送到Api链接以将文本转换为与搜索匹配的项目的ID。例如,搜索铁将返回all these values。但是我需要检查这些项目是否可以销售,有两种方法可以做。

I can access this link,这些都是可销售的ID的ID,并检查对象列表中的哪个项目ID在上述链接中是否不存在。

或者获取对象列表中的Item ID,并从不同的Api链接中检索更多信息。此链接包含一个名为Flags的属性,如果此属性具有值" NoSell"它应该从对象列表中删除。 Example link,此项目的属性为Flags,其值为NoSell

简短:将文字翻译成商品ID,检查此ID是否可销售。

1 个答案:

答案 0 :(得分:1)

以下是从https://api.guildwars2.com/v2/commerce/listings链接获取ID列表的方法:

List<string> ids = new List<string>();
    HttpWebRequest request =
                    (HttpWebRequest)WebRequest.Create("https://api.guildwars2.com/v2/commerce/listings");
                try
                {
                    WebResponse response = request.GetResponse();
                    using (Stream responseStream = response.GetResponseStream())
                    {
                        using (var reader = new StreamReader(responseStream))
                        {
                            ids = reader.ReadToEnd().TrimStart('[').TrimEnd(']').Split(',').Select(str => str.Trim())
                                .ToList();
                        }
                    }
                }
                catch (Exception)
                {

                    throw;
                }
return ids;

这不是JSON,它是逗号分隔的字符串。所以你需要解析它才能获得id的列表。