使用JArray从JSON获取值

我有以下字符串(json格式)
我从我的服务器上得到了:

{[{"ruta": "1","division": "7"},{"ruta": "2","division": "7"},{"ruta": "3","division":"7"},{"ruta": "4","division": "7"},{"ruta": "5","division": "7"},{"ruta": "23","division": "7"}]} 

我想获取每个值并将它们保存在字符串变量中,以便将它们保存在数据库中。

为此,我试图做如下:

 JArray jarr = JArray.Parse(result); foreach (JObject content in jarr.Children()) { foreach (JProperty prop in content.Properties()) { string tempValue = prop.Value.ToString; // This is not allowed //here more code in order to save in a database } } 

但我找不到将值转换为字符串的方法。

使用ToString() ,而不是ToString

ToString()是一个方法调用; ToString是对ToString方法的引用,只能分配给兼容的委托。

您也可以转换为String ,因为JToken类定义了转换:

 string tempValue = (string)prop.Value; 

另一个需要考虑的选择是使用JSON序列化:创建一个表示JSON数据的类(具有相同的结构),并将JSON反序列化到此类。 它使代码更具可读性和可维护性。

您可以使用C#类直接对json进行序列化(使用: – http://json2csharp.com/ ),而不需要遍历Json。

 public class YourClass { public string ruta { get; set; } public string division { get; set; } } 

你可以序列化

 List yourClasslist= JsonConvert.DeserializeObject>(result.ToString()); 

你可以这样做,因为你的Json是结构化的格式

 JArray jarr = JArray.Parse(result); foreach (JObject content in jarr.Children()) { foreach (JProperty prop in content.Properties()) { string tempValue = prop.Value.ToString(); // This is not allowed //here more code in order to save in a database } } 

至于JSON你应该从JObject开始,因为它被{}包围,或者从你在问题中发布的JSON周围删除它们

JProperty.ValueJProperty.Value类型,它有一个方法ToString (而不是属性)。

请参阅此处的文档

语法应该是这样的:

 string tempValue = prop.Value.ToString();