我目前有一个REST应用程序,它返回一个类似于:
的JSON字符串 [{error: "Account with that email exists"}]
用于何时抛出错误。我不想将它反序列化为自定义的“错误”对象,因为它看起来有点浪费和毫无意义。是否有一种简单的方法可以从JSON字符串中提取特定字段,而无需使用自定义类来反映它。
由于
答案 0 :(得分:4)
不需要第三方图书馆。使用原生JavaScriptSerializer。
string input = "[{error: \"Account with that email exists\"}]";
var jss = new JavaScriptSerializer();
var array = jss.Deserialize<object[]>(input);
var dict = array[0] as Dictionary<string, object>;
Console.WriteLine(dict["error"]);
// More short with dynamic
dynamic d = jss.DeserializeObject(input);
Console.WriteLine(d[0]["error"]);
答案 1 :(得分:3)
如果您不想创建自定义类,可以选择几个选项,可以反序列化为动态:
dynamic tmp = JsonConvert.DeserializeObject(yourString);
string error = (string)tmp.error;
或反序列化为字典:
var dic = JsonConvert.DeserializeObject<Dictionary<string, string>>();
string error = dic["error"];
答案 2 :(得分:1)
看看JObject。
{{1}}