我已经看过几个线程,但是我的目标是找不到。
我返回以下JSON字符串:
成功:
{"success":{"username":"key"}}
错误:
{"error":{"type":101,"address":"/","description":"link button not pressed"}}
我需要能够将这些序列化分为一堂课,并确定我是否有错误或成功消息来继续执行此操作。关于如何实现这一目标的任何想法?
谢谢,
亚当
无需声明很多很小的类。dynamic
关键字可以在这里提供帮助。
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
作为目标类型。<<<<<<<<<<<<<<<<<<<<<</p>
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字符串总是像这样(没有额外的whitespaces等)的情况下,才能做到这一点 - 因此,通常只有在您自己拥有JSON Generation时才适当。
此答案涵盖了大多数选项,包括滚动自己的解析器和使用json.net:
c#
中的解析JSON如果格式这么简单...