1
我使用RestSharp,并且在反序列化Json时出现问题。如何在不知道格式的情况下反序列化json?
在成功的情况下,收到一个JSON那样(数据是一个表):
{"status": "OK", "data": "[...]"}
并且在错误的情况下,收到一个JSON等(数据是一个字符串):
{"status": "ERROR", "data": "..."}
我怎么能知道,如果我有一个表或用绳子反序列化JSON的?
我的方法是类似的东西(它返回一个表,但崩溃,如果将JSON返回一个字符串数据):
public Task<Items> GetItemById(string id)
{
var client =
new RestClient(string.Format("{0}/{1}/{2}/{3}/{4}", _baseUrl,
AppResources.RestApiVersion, userId, token, AppResources.NotUse));
var tcs = new TaskCompletionSource<Items>();
var request = new RestRequest(string.Format("/items/get/{0}", id));
client.ExecuteAsync<Items>(request, response => {
try
{
tcs.SetResult(new JsonDeserializer().Deserialize<Items>(response));
}
catch (InvalidCastException e)
{
}
});
return tcs.Task;
}
嗯,你真的不希望只是反序列化的列表,虽然。要反序列化列表,您必须反序列化列表的内容,这将是具有非列表属性的对象。我的意思是,如果主要对象,你只想列表对象,你可以创建你'的ToString(增加一个静态的“深度”变量)'(这是递归)和增量深度的ToString(的'开头)'和在末尾递减它,并且只在depth> 0时处理第一个和第二个if语句。第三个if(else if(value是ArrayList)')处理列表。 – Pete