Использование winforms в c # со следующими пакетами nuget
WindowsAPICodePack-Shell //used for old style folder dialog
Newtonsoft.Json
У меня есть папка файлов со следующей структурой
{
"modelName": "3K05",
"Fridge":
{
"color" : "white",
"comment" : "sell at discount",
"version" : 1,
"date" : 20171102,
"features" : 264,
"purpose" : "Generic",
"format" : [1,5,10,0],
"build" : [[0,0,0,0,0,0],
[22,0,0,20,0,0],
[0,30,0,0,0,0],
[26,0,0,31,0,90],
[0,0,33,0,0,0], ]
}
}
Затем я пытаюсь разобрать, чтобы получить некоторую информациюиспользуя следующий код
foreach (string filename in Directory.GetFiles(dialog.FileName))
{
if (Path.GetExtension(filename) == ".APP") //name of json files
{
using (StreamReader r = new StreamReader(filename)) //read infile
{
dynamic array = JsonConvert.DeserializeObject(r.ReadToEnd()); //put into json array
foreach (var item in array) //parse thru array
{
if (item.modelName != null) listBox1.Items.Add(item.modelName); else listBox1.Items.Add("empty"); // get modelName
if (item.Fridge != null) listBox1.Items.Add(item.Fridge.color); else listBox1.Items.Add("empty"); //get color
if (item.Fridge != null) listBox1.Items.Add(item.Fridge.format); else listBox1.Items.Add("empty"); //get the string inside []
if (item.Fridge != null) listBox1.Items.Add(item.Fridge.build); else listBox1.Items.Add("empty"); //get second item as string [[ ] [ 2nd]]
}
}
}
}
Первая проблема заключается в том, что я не могу заставить что-либо работать, если не заключу свои данные в квадратные скобки [].так как я могу заставить его работать без квадратных скобок?
Мои рабочие данные
[
{
"modelName": "3K05",
"Fridge":
{
"color" : "white",
"comment" : "sell at discount",
"version" : 1,
"date" : 20171102,
"features" : 264,
"purpose" : "Generic",
"format" : [1,5,10,0],
"build" : [[0,0,0,0,0,0],
[22,0,0,20,0,0],
[0,30,0,0,0,0],
[26,0,0,31,0,90],
[0,0,33,0,0,0], ]
}
}
]
Второй вопрос: как мне теперь получить информацию из сборки и формата.Из сборки я хочу получить второй элемент в виде строки?
22,0,0,20,0,0
В настоящее время он собирается как коллекция.Я могу видеть, как попасть в первый, если у меня есть Fridge.color, который возвращает белый цвет, но как мне войти в Fridge.build.?
Как я начал работать, это смесь изотвечает, так что спасибо всем, кто ответил.
Я узнал новую часть VS, которая является Edit -> Paste Special -> Paste Json as классы
Затем я использовал ее как
var myObject = JsonConvert.DeserializeObject<Rootobject>(File.ReadAllText(@filename));
myObject.xxxx.yyyyy;
xxxx = экземпляр Rootobject класса Json yyyy = элемент в классе Json.Вот как я это понимаю, но слова, которые я использую, могут быть неверными.
Выполнение этого также показывает, что информация о сборке - это просто двумерный массив, с которым я счастлив работать.
Опять же благодаря этому сайту я узнал намного больше о C #