Недавно я пытался читать данные json в своем коде C # с намерением сохранить данные свойств в файле json, который будет загружен во время выполнения.Например, я хотел бы создать файл json для каждой сетки данных и представить каждый столбец как уникальный как раздел в файле json;примерно так:
[
{
"colWidth": 1,
"rowHeight": 10,
"moreStuff": 20
},
{
"ColWidth": 2,
"rowHeight": 100,
"SecondBAID": 200
},
{
"ColWidth": 3,
"rowHeight": 1000,
"moreStuff": 2000
},
{
"ColWidth": 4,
"rowHeight": 10000,
"moreStuff": 20000,
"someArray: [true, 5, "Column notes"]
},
{
"ColWidth": 5,
"rowHeight": 100000,
"moreStuff": 200000,
"evenMoreStuff":300000
}
]
Код, который я сейчас использую для чтения этого файла и назначения данных, выглядит следующим образом:
public static void LoadJson()
{
string json;
using (StreamReader r = new StreamReader(@"test.json"))
{
json = r.ReadToEnd();
}
dynamic array = JsonConvert.DeserializeObject(json);
var list = new List<MyClass>();
foreach (var section in array)
{
var si = new MyClass();
if (section.Whatever!= null)
{
si.Test1 = section.Whatever;
}
if (section.Whatever2!= null)
{
si.Test2 = section.Whatever2;
}
if (section.Whatever3!= null)
{
si.Test3 = section.Whatever3;
}
if (section.Whatever4!= null)
{
si.Test4 = section.Whatever4;
}
list.Add(si);
}
}
У меня есть несколько вопросов по этому поводу, хотя ...
1) Есть ли более простой способ отфильтровать нулевые значения?Иногда я хочу, чтобы свойство столбца было значением по умолчанию, и я бы предпочел не вкладывать десятки операторов if, если это возможно.Есть ли способ в основном сказать: «Если это свойство не существует в разделе json, просто игнорируйте его» * 1009 *
В настоящее время я просто перебираю все возможные свойства, выполняя простой метод get / set вMyClass и хранение переменных (в этом примере я использую «whatevers», поэтому я не публикую сотни строк кода; whatevers представляют допустимые поля в файле json.
2) В настоящее время я добавляюкаждый раздел файла JSON в динамический массив.Как я могу добиться этого, когда я хочу добавить массив свойств в динамический массив?Я хотел бы изменить код C # таким образом, чтобы, если у меня был вложенный массив, он был добавлен в некий многоуровневый список.Каков наилучший способ сделать это?
Я использую это ( Возможно ли иметь вложенный массив json? ) в качестве ссылки на массивы вложений в json.
Любой совет будет потрясающим!