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 编辑过  | 
		
			 关键字查询 
				相关文章 
				正在查询...  |