在c#中将Winform与以下nuget软件包一起使用
Private Sub TextBox1_Change()
TextBox1.Value = Replace$(TextBox1.Value, " ", "")
End Sub
我有一个具有以下结构的文件文件夹
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], ]
}
}
]
目前,它作为收藏出现。我可以看到如何进入第一个(如果具有Fridge.color并返回白色),但是我该如何进入Fridge.build。
我的工作方式是答案的混合体,所以感谢所有回答的人。
我学习了VS的新部分,即编辑->选择性粘贴->将Json粘贴为类
然后我把它当作
22,0,0,20,0,0
xxxx = Json类的Rootobject实例 yyyy = Json类中的项目。这就是我的理解,但是我使用的词可能不正确。
以这种方式进行操作还向我展示了构建信息只是一个二维数组,我很乐意使用。
再次感谢该站点,我对C#有了更多的了解
答案 0 :(得分:2)
以下类使用Json2CSharp为您的json建模。
public class Fridge
{
public string color { get; set; }
public string comment { get; set; }
public int version { get; set; }
public int date { get; set; }
public int features { get; set; }
public string purpose { get; set; }
public List<int> format { get; set; }
public List<List<int>> build { get; set; }
}
public class RootObject
{
public string modelName { get; set; }
public Fridge Fridge { get; set; }
}
请注意,只要您的json字符串有效,您也可以在Visual Studio中执行此操作。只需转到编辑->粘贴特殊。.
然后您可以进行以下消费:
var myObject=JsonConvert.DeserializeObject<RootObject>();
//get the format list
var formats=myObject.Fridge.format;
var build=myObject.Fridge.build;