C#使用Newtonsoft.Json读写json、读写Base64图像
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
废话不多说,直接上最精炼的代码,假设json串如下:
{
"key1": "val1",
"key2": {
"obj1": ["a", "b", "c"],
"obj2": 12.3
}
}
解析json串:
JObject jsonObj = (JObject)JsonConvert.DeserializeObject("{'key1':'val1','key2':{'obj1':['a','b','c'],'obj2':12.3}}");
string val = (string)jsonObj["key1"];
JArray arry = (JArray)jsonObj["key2"]["obj1"];
string valb = (string)arry[1];
double val2 = (double)jsonObj["key2"]["obj2"];
创建json串:
JObject obj= new JObject();
obj["key1"] = "val1";
JObject objKey2 = new JObject();
JArray arry1 = new JArray() { "a","b","c"};
objKey2["obj1"] = arry1;
objKey2["obj2"] = 12.3;
obj["key2"] = objKey2;
string json = obj.ToString();
下面是一个更复杂的例子,假设json串如下:
{
"txtRectangWidth": "100",
"txtRectangHeight": "50",
"txtRectangPrintWidth": "25",
"txtRectangPrintHeight": "12.5",
"txtLabelWidth": "40",
"txtLabelHeight": "30",
"txtLabelMoveUp": "0",
"txtLabelMoveLeft": "0",
"cBoxPrintDirect": "0",
"cBoxPrinterName": "",
"chkShowPrintingPreview": "0",
"chkLogoAble": "0",
"chkTextAble": "0",
"chkBarcodeAble": "0",
"chkQrcodeAble": "0",
"chkLineAble": "0",
"chkRectangleAble": "0",
"LogoAble": [
{
"txtLogoTop": "0",
"txtLogoLeft": "0",
"txtLogoWidth": "30",
"txtLogoHeight": "12",
"txtLogoPath": "",
"txtLogoUrl": ""
}
],
"TextAble": [
{
"txtTextTop": "0",
"txtTextLeft": "0",
"txtTextWidth": "0",
"cBoxTextFontSize": "9",
"cBoxTextFontFamily": "微软雅黑",
"txtTextContent": "代码:DSC103231\r\n名称:标签打印机\r\n型号:DH3210\r\n日期:2022-1-1\r\n状态:合格\r\n仓位:A312",
"cBoxTextType": "文字",
"radioTextScale": "1",
"radioTextDirectWrap": "0",
"chkTextBold": "0",
"chkTextDirect": "0"
}
],
"BarcodeAble": [
{
"cBoxBarcodeType": "CODE128",
"txtBarcodeWidth": "30",
"txtBarcodeHeight": "10",
"txtBarcodeTop": "0",
"txtBarcodeLeft": "0",
"txtBarCode": "P0123456789"
}
],
"QrcodeAble": [
{
"txtQrcodeWidth": "15",
"txtQrcodeTop": "14",
"txtQrcodeLeft": "24",
"txtQRCode": "DEMO:www.clicksun.cn",
"txtQrcodeAdjustNum": "1"
}
],
"LineAble": [
{
"cBoxLineDirect": "横线",
"txtLineTop": "0",
"txtLineLeft": "0",
"txtLineLength": "15",
"txtLineWidth": "1",
"cBoxLineStyle": "实线"
}
],
"RectangleAble": [
{
"txtRectangleTop": "0",
"txtRectangleLeft": "0",
"txtRectangleWidth": "36",
"txtRectangleHeight": "26",
"txtRectangleBorderWidth": "1",
"cBoxRectangleStyle": "实线"
}
]
} 解析json串:
try
{
string tmpPath = "";
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Multiselect = false;
fileDialog.Title = "请选择json文件路径";
fileDialog.Filter = "json文件|*.json";
if (fileDialog.ShowDialog() == DialogResult.OK)
{
string[] DragFilePaths = fileDialog.FileNames;
foreach (string DragFilePath in DragFilePaths)
{
FileInfo NewAddFile = new FileInfo(DragFilePath);
tmpPath = NewAddFile.FullName;
break;
}
}
if (tmpPath == "") { return; }
//读入外部json文件
StreamReader reader = File.OpenText(tmpPath);
JsonTextReader jsonTextReader = new JsonTextReader(reader);
JObject jsonObject = (JObject)JToken.Readfrom(jsonTextReader);
//JObject jsonObject = (JObject)JToken.Parse(jsonText); //直接从string加载
txtRectangWidth.Text = jsonObject["txtRectangWidth"].ToString();
txtRectangHeight.Text = jsonObject["txtRectangHeight"].ToString();
txtRectangPrintWidth.Text = jsonObject["txtRectangPrintWidth"].ToString();
txtRectangPrintHeight.Text = jsonObject["txtRectangPrintHeight"].ToString();
txtLabelWidth.Text = jsonObject["txtLabelWidth"].ToString();
txtLabelHeight.Text = jsonObject["txtLabelHeight"].ToString();
txtLabelMoveUp.Text = jsonObject["txtLabelMoveUp"].ToString();
txtLabelMoveLeft.Text = jsonObject["txtLabelMoveLeft"].ToString();
cBoxPrintDirect.Text = jsonObject["cBoxPrintDirect"].ToString();
cBoxPrinterName.Text = jsonObject["cBoxPrinterName"].ToString();
if (jsonObject["cBoxPrintDirect"].ToString() == "1") { chkPrintTestRectangle.Checked = true; } else { chkPrintTestRectangle.Checked = false; }
if (jsonObject["chkShowPrintingPreview"].ToString() == "1") { chkShowPrintingPreview.Checked = true; } else { chkShowPrintingPreview.Checked = false; }
if (jsonObject["chkLogoAble"].ToString() == "1") { chkLogoAble.Checked = true; } else { chkLogoAble.Checked = false; }
if (jsonObject["chkTextAble"].ToString() == "1") { chkTextAble.Checked = true; } else { chkTextAble.Checked = false; }
if (jsonObject["chkBarcodeAble"].ToString() == "1") { chkBarcodeAble.Checked = true; } else { chkBarcodeAble.Checked = false; }
if (jsonObject["chkQrcodeAble"].ToString() == "1") { chkQrcodeAble.Checked = true; } else { chkQrcodeAble.Checked = false; }
if (jsonObject["chkLineAble"].ToString() == "1") { chkLineAble.Checked = true; } else { chkLineAble.Checked = false; }
if (jsonObject["chkRectangleAble"].ToString() == "1") { chkRectangleAble.Checked = true; } else { chkRectangleAble.Checked = false; }
//读取LogoAble
txtLogoTop.Text = jsonObject["LogoAble"][0]["txtLogoTop"].ToString();
txtLogoLeft.Text = jsonObject["LogoAble"][0]["txtLogoLeft"].ToString();
txtLogoWidth.Text = jsonObject["LogoAble"][0]["txtLogoWidth"].ToString();
txtLogoHeight.Text = jsonObject["LogoAble"][0]["txtLogoHeight"].ToString();
txtLogoPath.Text = jsonObject["LogoAble"][0]["txtLogoPath"].ToString();
txtLogoUrl.Text = jsonObject["LogoAble"][0]["txtLogoUrl"].ToString();
//读取TextAble
txtTextTop.Text = jsonObject["TextAble"][0]["txtTextTop"].ToString();
txtTextLeft.Text = jsonObject["TextAble"][0]["txtTextLeft"].ToString();
txtTextWidth.Text = jsonObject["TextAble"][0]["txtTextWidth"].ToString();
cBoxTextFontSize.Text = jsonObject["TextAble"][0]["cBoxTextFontSize"].ToString();
cBoxTextFontFamily.Text = jsonObject["TextAble"][0]["cBoxTextFontFamily"].ToString();
txtTextContent.Text = jsonObject["TextAble"][0]["txtTextContent"].ToString();
cBoxTextType.Text = jsonObject["TextAble"][0]["cBoxTextType"].ToString();
if (jsonObject["TextAble"][0]["radioTextScale"].ToString() == "1") { radioTextScale.Checked = true; } else { radioTextScale.Checked = false; }
if (jsonObject["TextAble"][0]["radioTextDirectWrap"].ToString() == "1") { radioTextDirectWrap.Checked = true; } else { radioTextDirectWrap.Checked = false; }
if (jsonObject["TextAble"][0]["chkTextBold"].ToString() == "1") { chkTextBold.Checked = true; } else { chkTextBold.Checked = false; }
if (jsonObject["TextAble"][0]["chkTextDirect"].ToString() == "1") { chkTextDirect.Checked = true; } else { chkTextDirect.Checked = false; }
//读取BarcodeAble
cBoxBarcodeType.Text = jsonObject["BarcodeAble"][0]["cBoxBarcodeType"].ToString();
txtBarcodeWidth.Text = jsonObject["BarcodeAble"][0]["txtBarcodeWidth"].ToString();
txtBarcodeHeight.Text = jsonObject["BarcodeAble"][0]["txtBarcodeHeight"].ToString();
txtBarcodeTop.Text = jsonObject["BarcodeAble"][0]["txtBarcodeTop"].ToString();
txtBarcodeLeft.Text = jsonObject["BarcodeAble"][0]["txtBarcodeLeft"].ToString();
txtBarCode.Text = jsonObject["BarcodeAble"][0]["txtBarCode"].ToString();
//读取QrcodeAble
txtQrcodeWidth.Text = jsonObject["QrcodeAble"][0]["txtQrcodeWidth"].ToString();
txtQrcodeTop.Text = jsonObject["QrcodeAble"][0]["txtQrcodeTop"].ToString();
txtQrcodeLeft.Text = jsonObject["QrcodeAble"][0]["txtQrcodeLeft"].ToString();
txtQRCode.Text = jsonObject["QrcodeAble"][0]["txtQRCode"].ToString();
txtQrcodeAdjustNum.Text = jsonObject["QrcodeAble"][0]["txtQrcodeAdjustNum"].ToString();
//读取LineAble
cBoxLineDirect.Text = jsonObject["LineAble"][0]["cBoxLineDirect"].ToString();
txtLineTop.Text = jsonObject["LineAble"][0]["txtLineTop"].ToString();
txtLineLeft.Text = jsonObject["LineAble"][0]["txtLineLeft"].ToString();
txtLineLength.Text = jsonObject["LineAble"][0]["txtLineLength"].ToString();
txtLineWidth.Text = jsonObject["LineAble"][0]["txtLineWidth"].ToString();
cBoxLineStyle.Text = jsonObject["LineAble"][0]["cBoxLineStyle"].ToString();
//读取RectangleAble
txtRectangleTop.Text = jsonObject["RectangleAble"][0]["txtRectangleTop"].ToString();
txtRectangleLeft.Text = jsonObject["RectangleAble"][0]["txtRectangleLeft"].ToString();
txtRectangleWidth.Text = jsonObject["RectangleAble"][0]["txtRectangleWidth"].ToString();
txtRectangleHeight.Text = jsonObject["RectangleAble"][0]["txtRectangleHeight"].ToString();
txtRectangleBorderWidth.Text = jsonObject["RectangleAble"][0]["txtRectangleBorderWidth"].ToString();
cBoxRectangleStyle.Text = jsonObject["RectangleAble"][0]["cBoxRectangleStyle"].ToString();
reader.Close();
}
catch (Exception ex)
{
MessageBox.Show("保存失败,错误原因:\r\n" + ex.Message, "保存失败", MessageBoxButtons.OK, MessageBoxIcon.Stop);
} 创建json串并保存到指定文件:
try
{
string tmpPath = SaveFilePathName("","json文件|*.json","将本模板另存为json文件");
if (tmpPath=="") { return; }
JObject jsonObject = new JObject();
jsonObject["txtRectangWidth"] = txtRectangWidth.Text;
jsonObject["txtRectangHeight"] = txtRectangHeight.Text;
jsonObject["txtRectangPrintWidth"] = txtRectangPrintWidth.Text;
jsonObject["txtRectangPrintHeight"] = txtRectangPrintHeight.Text;
jsonObject["txtLabelWidth"] = txtLabelWidth.Text;
jsonObject["txtLabelHeight"] = txtLabelHeight.Text;
jsonObject["txtLabelMoveUp"] = txtLabelMoveUp.Text;
jsonObject["txtLabelMoveLeft"] = txtLabelMoveLeft.Text;
jsonObject["cBoxPrintDirect"] = cBoxPrintDirect.Text;
jsonObject["cBoxPrinterName"] = cBoxPrinterName.Text;
if (chkPrintTestRectangle.Checked == true) { jsonObject["cBoxPrintDirect"] = "1"; } else { jsonObject["cBoxPrintDirect"] = "0"; }
if (chkShowPrintingPreview.Checked == true) { jsonObject["chkShowPrintingPreview"] = "1"; } else { jsonObject["chkShowPrintingPreview"] = "0"; }
if (chkLogoAble.Checked == true) { jsonObject["chkLogoAble"] = "1"; } else { jsonObject["chkLogoAble"] = "0"; }
if (chkTextAble.Checked == true) { jsonObject["chkTextAble"] = "1"; } else { jsonObject["chkTextAble"] = "0"; }
if (chkBarcodeAble.Checked == true) { jsonObject["chkBarcodeAble"] = "1"; } else { jsonObject["chkBarcodeAble"] = "0"; }
if (chkQrcodeAble.Checked == true) { jsonObject["chkQrcodeAble"] = "1"; } else { jsonObject["chkQrcodeAble"] = "0"; }
if (chkLineAble.Checked == true) { jsonObject["chkLineAble"] = "1"; } else { jsonObject["chkLineAble"] = "0"; }
if (chkRectangleAble.Checked == true) { jsonObject["chkRectangleAble"] = "1"; } else { jsonObject["chkRectangleAble"] = "0"; }
//写入LogoAble
JObject jObjLogoAble = new JObject();
jObjLogoAble["txtLogoTop"] = txtLogoTop.Text;
jObjLogoAble["txtLogoLeft"] = txtLogoLeft.Text;
jObjLogoAble["txtLogoWidth"] = txtLogoWidth.Text;
jObjLogoAble["txtLogoHeight"] = txtLogoHeight.Text;
jObjLogoAble["txtLogoPath"] = txtLogoPath.Text;
jObjLogoAble["txtLogoUrl"] = txtLogoUrl.Text;
JArray arrayLogoAble = new JArray() { jObjLogoAble };
jsonObject["LogoAble"] = arrayLogoAble;
//写入TextAble
JObject jObjTextAble = new JObject();
jObjTextAble["txtTextTop"] = txtTextTop.Text;
jObjTextAble["txtTextLeft"] = txtTextLeft.Text;
jObjTextAble["txtTextWidth"] = txtTextWidth.Text;
jObjTextAble["cBoxTextFontSize"] = cBoxTextFontSize.Text;
jObjTextAble["cBoxTextFontFamily"] = cBoxTextFontFamily.Text;
jObjTextAble["txtTextContent"] = txtTextContent.Text;
jObjTextAble["cBoxTextType"] = cBoxTextType.Text;
if (radioTextScale.Checked == true) { jObjTextAble["radioTextScale"] = "1"; } else { jObjTextAble["radioTextScale"] = "0"; }
if (radioTextDirectWrap.Checked == true) { jObjTextAble["radioTextDirectWrap"] = "1"; } else { jObjTextAble["radioTextDirectWrap"] = "0"; }
if (chkTextBold.Checked == true) { jObjTextAble["chkTextBold"] = "1"; } else { jObjTextAble["chkTextBold"] = "0"; }
if (chkTextDirect.Checked == true) { jObjTextAble["chkTextDirect"] = "1"; } else { jObjTextAble["chkTextDirect"] = "0"; }
JArray arrayTextAble = new JArray() { jObjTextAble };
jsonObject["TextAble"] = arrayTextAble;
//写入BarcodeAble
JObject jObjBarcodeAble = new JObject();
jObjBarcodeAble["cBoxBarcodeType"] = cBoxBarcodeType.Text;
jObjBarcodeAble["txtBarcodeWidth"] = txtBarcodeWidth.Text;
jObjBarcodeAble["txtBarcodeHeight"] = txtBarcodeHeight.Text;
jObjBarcodeAble["txtBarcodeTop"] = txtBarcodeTop.Text;
jObjBarcodeAble["txtBarcodeLeft"] = txtBarcodeLeft.Text;
jObjBarcodeAble["txtBarCode"] = txtBarCode.Text;
JArray arrayBarcodeAble = new JArray() { jObjBarcodeAble };
jsonObject["BarcodeAble"] = arrayBarcodeAble;
//写入QrcodeAble
JObject jObjQrcodeAble = new JObject();
jObjQrcodeAble["txtQrcodeWidth"] = txtQrcodeWidth.Text;
jObjQrcodeAble["txtQrcodeTop"] = txtQrcodeTop.Text;
jObjQrcodeAble["txtQrcodeLeft"] = txtQrcodeLeft.Text;
jObjQrcodeAble["txtQRCode"] = txtQRCode.Text;
jObjQrcodeAble["txtQrcodeAdjustNum"] = txtQrcodeAdjustNum.Text;
JArray arrayQrcodeAble = new JArray() { jObjQrcodeAble };
jsonObject["QrcodeAble"] = arrayQrcodeAble;
//写入LineAble
JObject jObjLineAble = new JObject();
jObjLineAble["cBoxLineDirect"] = cBoxLineDirect.Text;
jObjLineAble["txtLineTop"] = txtLineTop.Text;
jObjLineAble["txtLineLeft"] = txtLineLeft.Text;
jObjLineAble["txtLineLength"] = txtLineLength.Text;
jObjLineAble["txtLineWidth"] = txtLineWidth.Text;
jObjLineAble["cBoxLineStyle"] = cBoxLineStyle.Text;
JArray arrayLineAble = new JArray() { jObjLineAble };
jsonObject["LineAble"] = arrayLineAble;
//写入RectangleAble
JObject jObjRectangleAble = new JObject();
jObjRectangleAble["txtRectangleTop"] = txtRectangleTop.Text;
jObjRectangleAble["txtRectangleLeft"] = txtRectangleLeft.Text;
jObjRectangleAble["txtRectangleWidth"] = txtRectangleWidth.Text;
jObjRectangleAble["txtRectangleHeight"] = txtRectangleHeight.Text;
jObjRectangleAble["txtRectangleBorderWidth"] = txtRectangleBorderWidth.Text;
jObjRectangleAble["cBoxRectangleStyle"] = cBoxRectangleStyle.Text;
JArray arrayRectangleAble = new JArray() { jObjRectangleAble };
jsonObject["RectangleAble"] = arrayRectangleAble;
//保存json文件
string output = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObject, Newtonsoft.Json.Formatting.Indented);
File.WriteAllText(tmpPath, output);
}
catch(Exception ex)
{
MessageBox.Show("保存失败,错误原因:\r\n" + ex.Message, "保存失败", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
/// <summary>
/// 选择保存文件的名称以及路径 取消返回 空"";
/// </summary>
/// <param name="fileName"></param>
/// <param name="filter"></param>
/// <param name="title"></param>
/// <returns></returns>
public static string SaveFilePathName(string fileName = null, string filter = null, string title = null)
{
string path = "";
SaveFileDialog fbd = new SaveFileDialog();
if (!string.IsNullOrEmpty(fileName))
{
fbd.FileName = fileName;
}
if (!string.IsNullOrEmpty(filter))
{
fbd.Filter = filter;// "Excel|*.xls;*.xlsx;";
}
if (!string.IsNullOrEmpty(title))
{
fbd.Title = title;// "保存为";
}
if (fbd.ShowDialog() == DialogResult.OK)
{
path = fbd.FileName;
}
return path;
} =====读写base64图像=====
将图像写入json:
JObject obj = new JObject();
obj["img"] = Convert.ToBase64String(Imgbytes);
string jsonStr = obj.ToString();
将json中的图像取出:
JObject jsonObj = (JObject)JsonConvert.DeserializeObject(jsonStr);
string imgStr = (string)jsonObj["img"];
byte[] Imgbytes = Convert.fromBase64String(imgStr); 该文章在 2022/8/11 0:52:23 编辑过 |
关键字查询
相关文章
正在查询... |