c# Api Json反序列化404时,值是错误的
c# Api Json deserializes when 404, values are wrong
我有一个代码可以访问 Api
link 并检索 Json
值并将它们存储在 object list
中。然而,当没有任何东西可以检索时(Link 到 Api 不存在)它 return 什么都没有。
然而,即使 Api link 是错误的,它仍然 returns Json 值。这些是它们的默认值,即使没有与请求的 ID 匹配的内容也将始终存在。
link 下方将显示无论如何都会 return 的值
这里是我调用 Api
的地方
var spidyApi_idByName_result = api_Handler.objFromApi_nameToId(spidyApi_searchIdByName);
此处 Api 被访问并且 Json 被反序列化。
public RootObject objFromApi_nameToId(string url){
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
try{
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();
return serializer.Deserialize<RootObject>(jsonReader);
}
}
catch (WebException){
throw;
// used throw as otherwise i can not run code, function requires every path to return
// Catch never gets called
}
}
根对象class
public RootObject GetApi(string url)
{
// ...
return serializer.Deserialize<RootObject>(jsonReader);
}
我如何四处走动并忽略它们的 "default" json 值?什么都不做。
您需要管理代码中的默认值。例如。您的无效 API 示例将始终 return 计数为 0。您现在可以使用该条件来决定您的程序流程。
RootObject rootObject = serializer.Deserialize<RootObject>(jsonReader);
if (rootObject.count > 0)
return rootObject;
else
return null; //or any other program flow you need to execute.
我有一个代码可以访问 Api
link 并检索 Json
值并将它们存储在 object list
中。然而,当没有任何东西可以检索时(Link 到 Api 不存在)它 return 什么都没有。
然而,即使 Api link 是错误的,它仍然 returns Json 值。这些是它们的默认值,即使没有与请求的 ID 匹配的内容也将始终存在。
link 下方将显示无论如何都会 return 的值
这里是我调用 Api
的地方var spidyApi_idByName_result = api_Handler.objFromApi_nameToId(spidyApi_searchIdByName);
此处 Api 被访问并且 Json 被反序列化。
public RootObject objFromApi_nameToId(string url){
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
try{
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();
return serializer.Deserialize<RootObject>(jsonReader);
}
}
catch (WebException){
throw;
// used throw as otherwise i can not run code, function requires every path to return
// Catch never gets called
}
}
根对象class
public RootObject GetApi(string url)
{
// ...
return serializer.Deserialize<RootObject>(jsonReader);
}
我如何四处走动并忽略它们的 "default" json 值?什么都不做。
您需要管理代码中的默认值。例如。您的无效 API 示例将始终 return 计数为 0。您现在可以使用该条件来决定您的程序流程。
RootObject rootObject = serializer.Deserialize<RootObject>(jsonReader);
if (rootObject.count > 0)
return rootObject;
else
return null; //or any other program flow you need to execute.