我真的试图自己解决我的问题。 我想反序列化一个JSON文件。我建立了一个非常基本的程序,只是为了看它是否有效。我认为我的班级定义可能不正确。
以下是显示反序列化结果的程序部分:
string json = txtJSON.Text;
Class1.Vartable xxx = new Class1.Vartable();
Newtonsoft.Json.JsonConvert.PopulateObject(json, xxx);
MessageBox.Show(xxx.addr);
我的班级定义如下:
public class Rootobject
{
public Class1[] Property1 { get; set; }
}
public class Class1
{
//....
public Vartable[] vartable { get; set; }
//....
public class Vartable
{
public string addr { get; set; }
public string name { get; set; }
}
}
还有很多,但这应该是有趣的部分。
最后但并非最不重要的是我的json文件:
[{"id":"e98e69e2.d43198","type":"tab","label":"Flow 1"},{"id":"d49719f2.67886","type":"tab","label":"Flow 2"},{"id":"e3b0164b.2e68d8","type":"subflow","name":"Subflow 1","info":"","in":[],"out":[]},{"id":"10767771.397e6d","type":"s7 endpoint","z":"e98e69e2.d43198","address":"10.10.4.3","port":"102","rack":"0","slot":"1","cycletime":"500","name":"S7Read","vartable":[{"addr":"DB4,INT2","name":"Value_1"},{"addr":"DB4,INT4","name":"Value_2"},{"addr":"DB4,INT6","name":"Value_3"},{"addr":"DB4,INT8","name":"Value_4"},{"addr":"DB4,INT10","name":"Value_5"},{"addr":"DB4,INT12","name":"Value_6"}]},{"id":"378eff77.34393c","type":"s7 in","z":"e98e69e2.d43198","endpoint":"10767771.397e6d","mode":"all","variable":"","diff":false,"name":"S7Read","x":100,"y":240,"wires":[["a85ec013.ea64d8"]]},{"id":"a85ec013.ea64d8","type":"rbe","z":"e98e69e2.d43198","name":"Value change?","func":"rbe","gap":"","start":"","inout":"out","x":280,"y":240,"wires":[["9e402637.004d28"]]},{"id":"aae165bf.4fdaf8","type":"function","z":"e98e69e2.d43198","name":"Convert","func":"return msg;","outputs":1,"noerr":0,"x":660,"y":320,"wires":[["9ef3c706.be7388"]]},{"id":"9ef3c706.be7388","type":"csv","z":"e98e69e2.d43198","name":"CreateCSV","sep":";","hdrin":"","hdrout":false,"multi":"one","ret":"\\r\\n","temp":",Value_1,Value_2,Value_3,Value_4,Value_5","x":830,"y":320,"wires":[["86750143.c061"]]},{"id":"86750143.c061","type":"function","z":"e98e69e2.d43198","name":"InputDate","func":"var control = msg.payload;\nif(control.startsWith(\";\"))\n{\n msg.payload = new Date().toString() + msg.payload;\n}\nreturn msg;","outputs":1,"noerr":0,"x":1000,"y":320,"wires":[["6abbf24d.56641c"]]},{"id":"6abbf24d.56641c","type":"change","z":"e98e69e2.d43198","name":"Format","rules":[{"t":"change","p":"payload","pt":"msg","from":"Fri ","fromt":"str","to":"","tot":"str"},{"t":"change","p":"payload","pt":"msg","from":"GMT+0000 (UTC)","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1160,"y":320,"wires":[["6fb5339d.87efec"]]},{"id":"9e402637.004d28","type":"trigger","z":"e98e69e2.d43198","op1":"","op2":"","op1type":"pay","op2type":"nul","duration":"3","extend":false,"units":"s","reset":"","name":"Trigger","x":460,"y":240,"wires":[["aae165bf.4fdaf8","5983b146.5acc0c"]]},{"id":"97b0ba18.47bd98","type":"file","z":"e98e69e2.d43198","name":"S7_CSV","filename":"/home/files/S7_Values.csv","appendNewline":true,"createDir":true,"overwriteFile":"true","x":360,"y":140,"wires":[]},{"id":"6fa1ac8d.bcb09c","type":"inject","z":"e98e69e2.d43198","name":"First Line","topic":"","payload":"Datum;Value_1;Value_2;Value_3;Value_4;Value_5","payloadType":"str","repeat":"","crontab":"","once":true,"x":120,"y":140,"wires":[["97b0ba18.47bd98"]]},{"id":"b2115820.6a77c8","type":"file","z":"e98e69e2.d43198","name":"S7Output","filename":"/home/files/S7_Values","appendNewline":false,"createDir":true,"overwriteFile":"true","x":1460,"y":320,"wires":[]},{"id":"1c19ba61.d12562","type":"exec","z":"e98e69e2.d43198","command":"cat /home/files/S7_Values >> /home/files/S7_Values.csv","addpay":false,"append":"","useSpawn":"","timer":"","name":"Append Output to CSV","x":600,"y":440,"wires":[[],[],[]]},{"id":"6fb5339d.87efec","type":"join","z":"e98e69e2.d43198","name":"","mode":"custom","build":"string","property":"payload","propertyType":"msg","key":"topic","joiner":"","timeout":"","count":"5","x":1310,"y":320,"wires":[["b2115820.6a77c8"]]},{"id":"3d908f1a.702518","type":"inject","z":"e98e69e2.d43198","name":"Run_Message","topic":"","payload":"Node-RED is now running!","payloadType":"str","repeat":"","crontab":"","once":true,"x":130,"y":60,"wires":[["63be3890.78bcc","832ae71b.7a6c78"]]},{"id":"63be3890.78bcc","type":"exec","z":"e98e69e2.d43198","command":"./etc/setledcolor.py 1","addpay":true,"append":"","useSpawn":"","timer":"","name":"LED_green","x":370,"y":60,"wires":[[],[],[]]},{"id":"2ea1089a.a61448","type":"tail","z":"e98e69e2.d43198","name":"S7_Values_Read","filetype":"binary","split":false,"filename":"/home/files/S7_Values","x":120,"y":440,"wires":[["9d1c411.653058"]]},{"id":"9d1c411.653058","type":"rbe","z":"e98e69e2.d43198","name":"","func":"rbe","gap":"","start":"","inout":"out","x":370,"y":440,"wires":[["1c19ba61.d12562","dd4154c1.0a3e38"]]},{"id":"da2f70a8.6bf318","type":"catch","z":"e98e69e2.d43198","name":"Error","scope":null,"x":90,"y":540,"wires":[["32abe0c0.5fc3c4"]]},{"id":"5983b146.5acc0c","type":"exec","z":"e98e69e2.d43198","command":"./etc/setledcolor.py 3","addpay":false,"append":"","useSpawn":"","timer":"","name":"LED_orange","x":650,"y":140,"wires":[[],[],[]]},{"id":"32abe0c0.5fc3c4","type":"debug","z":"e98e69e2.d43198","name":"Error message","active":true,"console":"true","complete":"payload","x":280,"y":580,"wires":[]},{"id":"832ae71b.7a6c78","type":"debug","z":"e98e69e2.d43198","name":"Run_Message","active":true,"console":"true","complete":"payload","x":380,"y":100,"wires":[]},{"id":"dd4154c1.0a3e38","type":"exec","z":"e98e69e2.d43198","command":"./etc/setledcolor.py 1","addpay":true,"append":"","useSpawn":"","timer":"","name":"LED_green","x":530,"y":517.3300170898438,"wires":[[],[],[]]}]
如果我粘贴完整的JSON文件我的程序sy它无效,导致第一个和最后一个[括号]。
如果我只是使用这个" {" addr":" DB4,INT2"," name":" Value_1" }"它工作正常。
提前谢谢。