a Json
에서 모든 값 을 가져 와서 모든 값을 Api link
개체 목록으로 deserialize 하는 함수가 있습니다. 나는 비교해야하는 ID value
것과 object list
함께 여기에 나열된 모든 ID 값 . 그러나 다른 Api 링크에서 사용한 함수를 사용하면 반환 된 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);
위 코드가 호출하는 함수
public static RootObject objFromApi_idToName(string spidyApiUrl, int page)
{
RootObject rootObject = null;
RootObject tempRootObject = null;
do{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(spidyApiUrl + "/" + page);
WebResponse response = request.GetResponse();
using (Stream responseStream = response.GetResponseStream()){
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
var jsonReader = new JsonTextReader(reader);
var serializer = new JsonSerializer();
tempRootObject = serializer.Deserialize<RootObject>(jsonReader);
if (rootObject == null){
rootObject = tempRootObject;
}
else{
rootObject.results.AddRange(tempRootObject.results);
rootObject.count += tempRootObject.count;
}
}
page++;
}
while (tempRootObject != null && tempRootObject.last_page != tempRootObject.page);
return rootObject;
}
spidyApi_idByName의 ID 값 이 여기 에 있는지, 객체 목록에서 제거되지 않았는지 어떻게 확인할 수 있습니까 ?
편집, 더 일반적인 정보 :
검색어를 입력 할 수있는 텍스트 상자가 있습니다. 그런 다음 Api 링크로 전송하여 텍스트를 검색과 일치하는 항목의 ID로 변환 합니다 . iron을 검색 하면 이러한 값이 모두 반환 됩니다 . 하지만이 아이템들이 판매 가능한지 확인해야하는데 두 가지 방법이 있습니다.
이 링크에 액세스 할 수 있습니다 . 이들은 모두 판매 가능한 항목의 ID이며 위 링크에 개체 목록의 항목 ID가 존재하지 않는지 확인합니다.
또는 개체 목록에있는 항목 ID를 가져 와서 다른 API 링크에서 더 많은 정보를 검색합니다. 이 링크에는 Flags라는 속성이 포함되어 있습니다.이 속성의 값이 "NoSell"이면 개체 목록에서 제거해야합니다. 예제 링크 ,이 항목에는 값이 NoSell 인 플래그 특성이 있습니다.
짧게 : 텍스트를 항목 ID로 번역하고이 ID가 판매 가능한지 확인합니다.
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 목록을 얻으려면 파싱해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다