Получить значение от JSON с помощью JArray

у меня есть следующая строка (формат 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<JObject>())
{
    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
    }
}

но я не могу найти способ преобразовать значения в строку.

4 ответов


использовать ToString(), а не ToString.

ToString() - это вызов метода; ToString ссылка на ToString метод, и может быть назначен только совместимые делегата.

вы также можете бросить в String С JToken класс определяет преобразования:

string tempValue = (string)prop.Value;

другой вариант - использовать сериализацию JSON: создать класс, представляющий данные JSON (с той же структурой), и десериализовать JSON в этот класс. Это делает код много более читаемый и ремонтопригодный.


вы можете напрямую де сериализовать свой json с помощью класса C# (используя: -http://json2csharp.com/) и не нужно перебирать Json.

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

Вы можете де-сериализовать

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

вы можете сделать это, потому что ваш Json находится в структурированном формате


JArray jarr = JArray.Parse(result);
foreach (JObject content in jarr.Children<JObject>())
{
    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.Value типа JToken который имеет метод ToString (а не собственность).

документации здесь.

синтаксис должен быть такой:

string tempValue = prop.Value.ToString();