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

C# 从JSON字符串中获取特定字段而无需在C中反序列化#,c#,json,C#,Json,我目前有一个REST应用程序,它返回一个JSON字符串,类似于: [{错误:“存在该电子邮件的帐户”}] 当抛出错误时。我不想将它反序列化为自定义的“error”对象,因为它看起来有点浪费和毫无意义。有没有一种简单的方法可以从JSON字符串中提取特定字段,而不需要定制类来反映它 谢谢如果您不想创建自定义类,您可以使用以下选项将其反序列化为动态: dynamic tmp = JsonConvert.DeserializeObject(yourString); string error = (str

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

[{错误:“存在该电子邮件的帐户”}]

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


谢谢

如果您不想创建自定义类,您可以使用以下选项将其反序列化为动态:

dynamic tmp = JsonConvert.DeserializeObject(yourString);
string error = (string)tmp.error;
或反序列化到字典:

var dic = JsonConvert.DeserializeObject<Dictionary<string, string>>();
string error = dic["error"];
var dic=JsonConvert.DeserializeObject();
字符串错误=dic[“错误”];
看一看


不需要第三方库。使用本地语言

string input=“[{error:\”存在该电子邮件的帐户\“}]”;
var jss=新的JavaScriptSerializer();
var array=jss.Deserialize(输入);
var dict=数组[0]作为字典;
控制台写入线(dict[“错误]);
//更简短的动态
动态d=jss.DeserializeObject(输入);
Console.WriteLine(d[0][“error”]);

我肯定会反序列化。任何其他的字符串搜索操作都会花费你更多。如果你发布了有效的json就好了。你给我们的是一段有效的json,它是不完整的,它的副本可能是动态的abuse@orhor虽然我并不同意在处理JSON时反序列化为动态“绝对”是动态滥用,但我已经发布了一个替代方案。为什么你认为这是动态滥用?我们使用C#,这是一种类型语言,这是它的优点。你为什么反对上课。最好的方法是使用消息类型及其错误属性,并对其进行反序列化。我知道有些服务可能返回非系统的混合或混乱结果,但情况不同。在我看来,正确的方法是保持强类型。对不起,我说的是“老派”@orhor好的,我决定创建一个只包含成功或失败消息的子类,如果成功了,那么我会再次反序列化字符串,但这次是在实际的类中。太好了!我希望会有一个本地人solution@S.LukasJson.NET实际上是本机的。github上有太多依赖它的microsoft库。
dynamic obj = JObject.Parse("{ myerrors: [{error: \"Account with that email exists\"}] }");
var a = obj.myerrors[0];
string error = a.error;
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"]);