У меня есть JSON, и часть его содержит строковые значения, такие как
"parent_crumbs": [
"Platforms",
"STATS , EXPE , ESTAP",
"Portal"
],
Я использую приведенный ниже код для чтения значения из объекта JSON.
JObject _task; //parse the JSON to JOBJECT first
string values= (string)_task["parent_crumbs"].ToString();
Это вернет строку с квадратными скобками и только кавычками.
Как я могу преобразовать это в массив строк в C#
Я могу удалить [и], а затем разделить на, но когда, присутствует в строковых элементах посередине, все предположения нарушатся. Итак, доступны ли какие-либо методы для чтения из JArray в String Array
Последняя версия от NUGET
Попробуйте IEnumerable<string > strings= _task[“parent_crumbs”].Select(s=>s.Value<string>();
Не могли бы вы решить вашу проблему?





Вы не разместили полную строку json, поэтому предположим, что это примерно так:
{
"id": 123,
"parent_crumbs": [
"Platforms",
"STATS , EXPE , ESTAP",
"Portal"
]
}
Вы можете создать модель C#, соответствующую этой структуре, следующим образом:
public class Data
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("parent_crumbs")]
public List<string> ParentCrumbs { get; set; }
}
А затем десериализуйте строку json в экземпляр класса Data:
string json = @"{
""id"": 123,
""parent_crumbs"": [
""Platforms"",
""STATS , EXPE , ESTAP"",
""Portal""
]
}";
Data data = JsonConvert.DeserializeObject<Data>(json);
foreach (string crumb in data.ParentCrumbs)
{
Console.WriteLine(crumb);
}
Вместо десериализации всей строки json вы можете сделать следующее:
string json = @"{
""id"": 123,
""parent_crumbs"": [
""Platforms"",
""STATS , EXPE , ESTAP"",
""Portal""
]
}";
JObject data = JObject.Parse(json);
JToken crumbsToken = data.GetValue("parent_crumbs");
List<string> crumbs = JsonConvert.DeserializeObject<List<string>>(crumbsToken.ToString());
// alternative way to get the string values, as suggested by @BrianRogers
List<string> crumbs = crumbsToken.ToObject<List<string>>();
Это очень длинный JSON, и модель построения для всех свойств для меня непрактична. Мне нужно сделать около 60+ объектов недвижимости. Вот почему я делаю встроенное преобразование в строку или JArray
@JibinMathew Я добавил больше деталей к своему ответу, пожалуйста, посмотрите.
При десериализации обратите внимание, что вы можете создать модель с меньшим количеством свойств, и она все равно будет работать.
@SandRock, круто, никогда не пробовал ТБХ - спасибо за информацию :-)
@RuiJarimba Не конвертируйте JToken в строку, чтобы развернуть и десериализовать ее. Вместо этого используйте .ToObject<T>() следующим образом: List<string> crumbs = crumbsToken.ToObject<List<string>>();
@BrianRogers Я отредактировал свой ответ, спасибо за отзыв :-)
Какую версию json.net/Newtonsoft.Json вы используете?