Получить значение от 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();