从JSON字符串获取特定字段而不在C#中反序列化

时间:2016-05-18 05:37:01

标签: c# json

我目前有一个REST应用程序,它返回一个类似于:

的JSON字符串

[{error: "Account with that email exists"}]

用于何时抛出错误。我不想将它反序列化为自定义的“错误”对象,因为它看起来有点浪费和毫无意义。是否有一种简单的方法可以从JSON字符串中提取特定字段,而无需使用自定义类来反映它。

由于

3 个答案:

答案 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}}