我已经查看了一些线程,但我的目标似乎找不到。
我返回了以下 JSON 字符串:
成功时:
{"success":{"username":"key"}}
出错时:
{"error":{"type":101,"address":"/","description":"link button not pressed"}}
我需要能够将它们反序列化为一个类,并确定我是否有错误或成功消息来继续执行此操作。关于如何实现这一目标的任何想法?
谢谢,
亚当
No need to declare a lot of tiny classes. dynamic
keyword can help here.
dynamic jObj = JObject.Parse(json);
if (jObj.error!= null)
{
string error = jObj.error.description.ToString();
}
else
{
string key = jObj.success.username.ToString();
}
一种选择是使用http://nuget.org/packages/newtonsoft.json - 您可以创建自己的自定义类以反序列dynamic
化或用作目标类型。
var result = JsonConvert.DeserializeObject<Result>(jsonString);
class Result
{
public SuccessResult success { get; set; }
public ErrorResult error { get; set; }
}
class SuccessResult
{
public string username { get; set; }
}
class ErrorResult
{
public int type { get; set; }
public string address { get; set; }
public string description { get; set; }
}
如果您只需要检查是否成功,则可以只检查result.StartsWith("{\"success\":")
以避免不必要的解析。但这只有在您保证 JSON 字符串始终与此完全相同(没有额外的空格等)时才应该这样做 - 所以通常只有您自己拥有 JSON 生成时才合适。