将DGV更新内容序列化回原有JSON文件并保持格式一致的实现咨询
我已将反序列化后的JSON文件内容直接输出到DGV控件中对终端用户可见,用户使用完软件关闭程序时,需要将更新后的DGV内容序列化写回JSON文件。
我反序列化该JSON文件的代码如下:
代码
var v = JsonConvert.DeserializeObject<ToolJson> (File.ReadAllText(@"\testLibrary.json")); //set DGV source to our datums toolDataGridView.DataSource = v.Datums.Cast<IInteresting> ().ToList();
窗体关闭时我需要将DGV数据写回JSON文件,且完全保留其原有格式。以下是JSON文件的片段,我通过DGV仅维护数量、最近使用员工、工具是否需要归还相关信息,本质是为JSON文件新增5个顶层属性字段。
JSON文件
{ "data": [ { "BMC": "carbide", "Cost": 0, "Employee": "", "GRADE": "Mill Generic", "Location": "", "description": "5/8-11\"", "geometry": { "CSP": false, "DC": 0.433, "HAND": true, "LB": 2, "LCF": 0.5, "NOF": 4, "NT": 1, "OAL": 5, "SFDM": 0.625, "TP": 0.0909091, "shoulder-length": 1.969, "thread-profile-angle": 60 }, "guid": "0112c196-8a79-421d-8dda-d4aa964aa6d7", "holder": { "description": "Maritool CAT40-ER32-2.35", "guid": "e800051b-e2d6-4699-a2b6-dad6466a0a0c", "last_modified": 1485790626152, "product-id": "CAT40-ER32-2.35", "product-link": "", "segments": [ { "height": 0.148, "lower-diameter": 1.5, "upper-diameter": 1.97 }, { "height": 0.836, "lower-diameter": 1.97, "upper-diameter": 1.97 }, { "height": 0.176, "lower-diameter": 1.57, "upper-diameter": 1.57 }, { "height": 0.09, "lower-diameter": 1.57, "upper-diameter": 1.75 }, { "height": 0.425, "lower-diameter": 1.75, "upper-diameter": 1.75 }, { "height": 0.05, "lower-diameter": 1.75, "upper-diameter": 1.85 }, { "height": 0.03, "lower-diameter": 2.442, "upper-diameter": 2.502 }, { "height": 0.145, "lower-diameter": 2.502, "upper-diameter": 2.502 }, { "height": 0.079, "lower-diameter": 2.502, "upper-diameter": 2.215 }, { "height": 0.118, "lower-diameter": 2.215, "upper-diameter": 2.215 }, { "height": 0.079, "lower-diameter": 2.215, "upper-diameter": 2.502 }, { "height": 0.143, "lower-diameter": 2.502, "upper-diameter": 2.502 }, { "height": 0.03, "lower-diameter": 2.502, "upper-diameter": 2.442 }, { "height": 0.125, "lower-diameter": 1.75, "upper-diameter": 1.75 } ], "type": "holder", "unit": "inches", "vendor": "Maritool" }, "onHandQty": 0, "OrderQty": 5, "post-process": { "break-control": false, "comment": "", "diameter-offset": 17, "length-offset": 17, "live": true, "manual-tool-change": false, "number": 17, "turret": 0 }, "product-id": "GMDTTM58-11UN4FL", "product-link": "6010", "start-values": { "presets": [ { "description": "", "f_n": 0.012242786571039, "f_z": 0.0031, "guid": "eac33213-4083-35b8-afe3-17bd42a249f0", "n": 4410.76054758139, "n_ramp": 44110, "name": "1018", "tool-coolant": "flood", "use-stepdown": false, "use-stepover": false, "v_c": 499.9999999999994, "v_f": 54.6934307900093, "v_f_leadIn": 54, "v_f_leadOut": 54, "v_f_plunge": 54, "v_f_ramp": 54 }, { "description": "", "f_n": 0.010769117817118, "f_z": 0.0028, "guid": "f35f5601-68a9-477b-b4b0-2ffeedb3bef1", "n": 1764.3042190325598, "n_ramp": 1764, "name": "4140", "tool-coolant": "flood", "use-stepdown": false, "use-stepover": false, "v_c": 200, "v_f": 19.7602072531647, "v_f_leadIn": 19, "v_f_leadOut": 19, "v_f_plunge": 19, "v_f_ramp": 19 }, { "description": "", "f_n": 0.012091641057817, "f_z": 0.0031, "guid": "b118ce46-da35-4ed6-9806-b98e05ffe077", "n": 2646.45632854884, "n_ramp": 2646, "name": "Tool Steel", "tool-coolant": "flood", "use-stepdown": false, "use-stepover": false, "v_c": 300, "v_f": 32.8160584740056, "v_f_leadIn": 32, "v_f_leadOut": 32, "v_f_plunge": 32, "v_f_ramp": 32 }, { "description": "", "f_n": 0.01118476797848, "f_z": 0.0028, "guid": "0e1767f5-b0ef-422f-b49d-6cb8c3eb06ed", "n": 3308.0704106860494, "n_ramp": 3308, "name": "Stainless Steel", "tool-coolant": "flood", "use-stepdown": false, "use-stepover": false, "v_c": 375, "v_f": 37.0503885996837, "v_f_leadIn": 37, "v_f_leadOut": 37, "v_f_plunge": 37, "v_f_ramp": 37 } ] }, "stockQty": 5, "type": "thread mill", "unit": "inches", "vendor": "Gorilla Mill" } ] }
内容的提问来源于stack exchange,提问作者Joe Fisher
相关产品推荐
相关产品推荐

