JSON файл содержит поле и три массива. Первые 2 массива описывают данные, последний массив содержит массивы с данными, каждый массив это один тип данных описанный в предыдущем массиве. Пример:
{
"head": "111",
"original": [
"1",
"4",
"5",
],
"fields": [
"Rid",
"Guid",
"Options",
],
"values": [
[
6,
0,
1,
[
"{0047B3AB-08B9-1D40-052C-D85868CC4F33}",
"{15DB501E-DBBD-EB79-0E64-225FDBEA848E}",
"{137555FA-DDDF-7AC3-9E61-AD1E0A5402EA}",
],
[
0,
0,
11,
],
]
}
Если запарсить мой пример используя объект:
public class Shtable
{
public string head { get; set; }
public string[] original { get; set; }
public string[] fields { get; set; }
public object[][] values { get; set; }
}
То можно разобрать массивы следующий кодом:
for (int x = 0; x < Shtable.Count(); x++)
{
Value value= new Value
{
Rid = (long)values[0][x], // 6
Guid = (string)values[1][x], // "{0047B3AB-08B9-1D40-052C-D85868CC4F33}"
Options = (long)values[2][x] // 0
}
}
Проблема в том что количество полей не 3, а 69. Хочется избежать использования циклов.
Разбирается такой JSON весьма не сложно. Первый 2 массива содержат наименование полей данных, создаем из одного из них справочник индексов(в примере я взял original):
Dictionary<string, int> dict = new Dictionary<string, int>();
for (int x = 0; x < original.Length; x++) dict.Add(original[x], x);
И уже потом заходим в цикл и выбираем поля по их идентификаторам из массива original
for (int x = 0; x < Shtable.Count(); x++)
{
Value value= new Value
{
Rid = (long)values[dict["1"]][x], // 6
Guid = (string)values[dict["4"]][x], // "{0047B3AB-08B9-1D40-052C-D85868CC4F33}"
Options = (long)values[dict["5"]][x] // 0
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужен метод который будет отслеживать изменения в свойствах другого классаПодскажите, пожалуйста, как можно это реализовать или где об этом...
Пытаюсь достать из переменной $result_text ГОСТы, когда в переменной храню короткую строку в которую включён какой нибудь ГОСТ, preg_match_all находитИ...
У меня есть две таблицыВ одной таблице id пользователей, в другой id пользователей, которых функция рандома не должна вызвать
День добрый! Не могу понять почему при выводе на экран всей строки отображается как должно, а при переборе �? Подскажите в чем дело