2020-12-17 V2.0.2012.1701

*.[改进]当以json模式post数据时,自动转码json中的中文。
*.[改进]修复json查看器括号折叠不正确的BUG。
This commit is contained in:
鑫Intel 2020-12-17 14:18:06 +08:00
parent 11ee9eb8e2
commit e9f5ca3c3c
6 changed files with 1049 additions and 1047 deletions

View File

@ -52,7 +52,7 @@ namespace JackWangCUMT.WinForm
{ {
startLines.Push(i); startLines.Push(i);
} }
if (text_trim.StartsWith("}")) // Look for method endings if (text_trim.StartsWith("}") || text_trim.EndsWith("},")) // Look for method endings
{ {
if (startLines.Count > 0) if (startLines.Count > 0)
{ {
@ -60,23 +60,11 @@ namespace JackWangCUMT.WinForm
list.Add(new FoldMarker(document, start, document.GetLineSegment(start).Length, i, 57, FoldType.TypeBody, "...}")); list.Add(new FoldMarker(document, start, document.GetLineSegment(start).Length, i, 57, FoldType.TypeBody, "...}"));
} }
} }
if (text_trim.StartsWith("[")) // Look for method starts if (text_trim.StartsWith("[")|| text_trim.EndsWith("[")) // Look for method starts
{ {
startLines.Push(i); startLines.Push(i);
} }
if (text_trim.StartsWith("]")) // Look for method endings if (text_trim.StartsWith("]") || text_trim.EndsWith("],")) // Look for method endings
{
if (startLines.Count > 0)
{
int start = startLines.Pop();
list.Add(new FoldMarker(document, start, document.GetLineSegment(start).Length, i, 57, FoldType.TypeBody, "...]"));
}
}
if (text_trim.EndsWith("[")) // Look for method starts
{
startLines.Push(i);
}
if (text_trim.StartsWith("]")) // Look for method endings
{ {
if (startLines.Count > 0) if (startLines.Count > 0)
{ {

View File

@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: : // 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.0.2012.1501")] [assembly: AssemblyVersion("2.0.2012.1701")]
[assembly: AssemblyFileVersion("2.0.2012.1501")] [assembly: AssemblyFileVersion("2.0.2012.1701")]

View File

@ -1,266 +1,266 @@
using ICSharpCode.TextEditor.Document; using ICSharpCode.TextEditor.Document;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking; using WeifenLuo.WinFormsUI.Docking;
namespace .Tools namespace .Tools
{ {
public partial class FrmJson : DockContent public partial class FrmJson : DockContent
{ {
public FrmJson() public FrmJson()
{ {
InitializeComponent(); InitializeComponent();
textEditorControl1.Document.FoldingManager.FoldingStrategy = new JackWangCUMT.WinForm.MingFolding(); textEditorControl1.Document.FoldingManager.FoldingStrategy = new JackWangCUMT.WinForm.MingFolding();
} }
private void LoadTreeList(TreeNodeCollection nodes,JObject jo) private void LoadTreeList(TreeNodeCollection nodes,JObject jo)
{ {
foreach (var item in jo) foreach (var item in jo)
{ {
if (item.Value.HasValues) if (item.Value.HasValues)
{ {
var node = nodes.Add(item.Key.ToString()); var node = nodes.Add(item.Key.ToString());
node.Tag = new JsonInfo() { name = item.Key.ToString(), value = item.Value.ToString() }; node.Tag = new JsonInfo() { name = item.Key.ToString(), value = item.Value.ToString() };
try try
{ {
JArray jar = JArray.Parse(item.Value.ToString()); JArray jar = JArray.Parse(item.Value.ToString());
if (jar != null) if (jar != null)
{ {
for (int i = 0; i < jar.Count; i++) for (int i = 0; i < jar.Count; i++)
{ {
var node1 = node.Nodes.Add(i.ToString()); var node1 = node.Nodes.Add(i.ToString());
node.Tag = new JsonInfo() { name = item.Key.ToString(), value = item.Value.ToString() }; node.Tag = new JsonInfo() { name = item.Key.ToString(), value = item.Value.ToString() };
LoadTreeList(node1.Nodes, (JObject)JsonConvert.DeserializeObject(jar[i].ToString())); LoadTreeList(node1.Nodes, (JObject)JsonConvert.DeserializeObject(jar[i].ToString()));
//TreeNode new_child = new TreeNode(); //TreeNode new_child = new TreeNode();
//new_child.Text = jar[i].ToString(); //new_child.Text = jar[i].ToString();
//node.Nodes.Add(new_child); //node.Nodes.Add(new_child);
} }
} }
} }
catch(Exception) catch(Exception)
{ LoadTreeList(node.Nodes, (JObject)JsonConvert.DeserializeObject(item.Value.ToString())); } { LoadTreeList(node.Nodes, (JObject)JsonConvert.DeserializeObject(item.Value.ToString())); }
//JArray jar = JArray.Parse(item.Value.ToString()); //JArray jar = JArray.Parse(item.Value.ToString());
//if (jar.Count != 0) //if (jar.Count != 0)
{ {
//for (int i = 0; i < jar.Count; i++) //for (int i = 0; i < jar.Count; i++)
//{ //{
// TreeNode new_child = new TreeNode(); // TreeNode new_child = new TreeNode();
// new_child.Text = jar[i].ToString(); // new_child.Text = jar[i].ToString();
// nodes.Add(new_child); // nodes.Add(new_child);
//} //}
} }
} }
else else
{ {
var node = nodes.Add(item.ToString()); var node = nodes.Add(item.ToString());
node.Tag = new JsonInfo() { name = item.Key.ToString(), value = item.Value.ToString() }; node.Tag = new JsonInfo() { name = item.Key.ToString(), value = item.Value.ToString() };
} }
} }
} }
private void BtnFormat_Click(object sender, EventArgs e) private void BtnFormat_Click(object sender, EventArgs e)
{ {
string json_text = textEditorControl1.Text; string json_text = textEditorControl1.Text;
treeView1.Nodes.Clear(); treeView1.Nodes.Clear();
//if (Manager.Json.IsJson(json_text)) //if (Manager.Json.IsJson(json_text))
{ {
try try
{ {
textEditorControl1.Document.TextContent = Manager.Json.ConvertJsonString(json_text); textEditorControl1.Document.TextContent = Manager.Json.ConvertJsonString(json_text);
textEditorControl1.Refresh(); textEditorControl1.Refresh();
JObject jo = null; JObject jo = null;
if (Manager.Json.IsArray(json_text)) if (Manager.Json.IsArray(json_text))
{ {
var node2 = treeView1.Nodes.Add("0"); var node2 = treeView1.Nodes.Add("0");
JArray jar = JArray.Parse(json_text); JArray jar = JArray.Parse(json_text);
ScanArray(node2.Nodes, jar); ScanArray(node2.Nodes, jar);
} }
else else
{ {
jo = (JObject)JsonConvert.DeserializeObject(json_text); jo = (JObject)JsonConvert.DeserializeObject(json_text);
Scan(treeView1.Nodes, jo); Scan(treeView1.Nodes, jo);
} }
void Scan(TreeNodeCollection nodes, JObject _jo) void Scan(TreeNodeCollection nodes, JObject _jo)
{ {
IEnumerable<JProperty> properties = _jo.Properties(); IEnumerable<JProperty> properties = _jo.Properties();
foreach (JProperty item in properties) foreach (JProperty item in properties)
{ {
if (item.Value.Type == JTokenType.Array) if (item.Value.Type == JTokenType.Array)
{ {
var node2 = nodes.Add(item.Name); var node2 = nodes.Add(item.Name);
node2.Tag = new JsonInfo() { name = item.Name, value = item.Value.ToString() }; node2.Tag = new JsonInfo() { name = item.Name, value = item.Value.ToString() };
JArray jar = JArray.Parse(item.Value.ToString()); JArray jar = JArray.Parse(item.Value.ToString());
ScanArray(node2.Nodes, jar); ScanArray(node2.Nodes, jar);
} }
else if (item.Value.Type == JTokenType.Object) else if (item.Value.Type == JTokenType.Object)
{ {
var node2 = nodes.Add(item.Name); var node2 = nodes.Add(item.Name);
node2.Tag = new JsonInfo() { name = item.Name, value = item.Value.ToString() }; node2.Tag = new JsonInfo() { name = item.Name, value = item.Value.ToString() };
Scan(node2.Nodes, (JObject)JsonConvert.DeserializeObject(item.Value.ToString())); Scan(node2.Nodes, (JObject)JsonConvert.DeserializeObject(item.Value.ToString()));
} }
else { else {
var node = nodes.Add(item.Name + ":" + item.Value + "|" + item.Value.Type.ToString()); var node = nodes.Add(item.Name + ":" + item.Value + "|" + item.Value.Type.ToString());
node.Tag = new JsonInfo() { name = item.Name, value = item.Value.ToString() }; node.Tag = new JsonInfo() { name = item.Name, value = item.Value.ToString() };
} }
//Console.WriteLine(item.Name + ":" + item.Value); //Console.WriteLine(item.Name + ":" + item.Value);
} }
//var values = _jo.Values<JProperty>(); //var values = _jo.Values<JProperty>();
//foreach (var item in values) //foreach (var item in values)
//{ //{
// var va = item.Value<JProperty>().Children.Children<JProperty>(); // var va = item.Value<JProperty>().Children.Children<JProperty>();
// var node = nodes.Add(item.ToString()); // var node = nodes.Add(item.ToString());
// //if(item.HasValues) // //if(item.HasValues)
// //Scan(node.Nodes,(JObject)JsonConvert.DeserializeObject(item.ToString())); // //Scan(node.Nodes,(JObject)JsonConvert.DeserializeObject(item.ToString()));
//} //}
} }
void ScanArray(TreeNodeCollection nodes, JArray jar) void ScanArray(TreeNodeCollection nodes, JArray jar)
{ {
if (jar != null) if (jar != null)
{ {
for (int i = 0; i < jar.Count; i++) for (int i = 0; i < jar.Count; i++)
{ {
var node3 = nodes.Add(i.ToString()); var node3 = nodes.Add(i.ToString());
if (jar[i].Type == JTokenType.Object) if (jar[i].Type == JTokenType.Object)
{ {
Scan(node3.Nodes, (JObject)jar[i]); Scan(node3.Nodes, (JObject)jar[i]);
} }
else else
{ {
node3.Nodes.Add(jar[i].ToString()); node3.Nodes.Add(jar[i].ToString());
node3.Tag = new JsonInfo() { name = jar[i].ToString() }; node3.Tag = new JsonInfo() { name = jar[i].ToString() };
} }
} }
} }
} }
//if (Manager.Json.IsArray(json_text)) //if (Manager.Json.IsArray(json_text))
//{ //{
// JArray jar = JArray.Parse(json_text); // JArray jar = JArray.Parse(json_text);
// if (jar != null) // if (jar != null)
// { // {
// for (int i = 0; i < jar.Count; i++) // for (int i = 0; i < jar.Count; i++)
// { // {
// var node1 = treeView1.Nodes.Add(i.ToString()); // var node1 = treeView1.Nodes.Add(i.ToString());
// LoadTreeList(node1.Nodes, (JObject)JsonConvert.DeserializeObject(jar[i].ToString())); // LoadTreeList(node1.Nodes, (JObject)JsonConvert.DeserializeObject(jar[i].ToString()));
// //TreeNode new_child = new TreeNode(); // //TreeNode new_child = new TreeNode();
// //new_child.Text = jar[i].ToString(); // //new_child.Text = jar[i].ToString();
// //node.Nodes.Add(new_child); // //node.Nodes.Add(new_child);
// } // }
// } // }
//} //}
//else //else
//{ //{
// jo = (JObject)JsonConvert.DeserializeObject(json_text); // jo = (JObject)JsonConvert.DeserializeObject(json_text);
//} //}
//LoadTreeList(treeView1.Nodes,jo); //LoadTreeList(treeView1.Nodes,jo);
//for (int i = 0; i < jo.Count; i++) //for (int i = 0; i < jo.Count; i++)
//{ //{
// treeView1.Nodes.Add(jo..ToString()); // treeView1.Nodes.Add(jo..ToString());
//} //}
} }
catch(Exception ex) catch(Exception ex)
{ {
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
} }
//else //else
//{ //{
// MessageBox.Show("无效的Json内容", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); // MessageBox.Show("无效的Json内容", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
// textEditorControl1.Document.TextContent = json_text; // textEditorControl1.Document.TextContent = json_text;
// textEditorControl1.Refresh(); // textEditorControl1.Refresh();
//} //}
} }
public void LoadJson(string json_text) public void LoadJson(string json_text)
{ {
textEditorControl1.Document.TextContent = json_text; textEditorControl1.Document.TextContent = json_text;
textEditorControl1.Refresh(); textEditorControl1.Refresh();
BtnFormat.PerformClick(); BtnFormat.PerformClick();
} }
private void ToolStripMenuItem_Click(object sender, EventArgs e) private void ToolStripMenuItem_Click(object sender, EventArgs e)
{ {
if (treeView1.SelectedNode == null) { return; } if (treeView1.SelectedNode == null) { return; }
JsonInfo item = (JsonInfo)treeView1.SelectedNode.Tag; JsonInfo item = (JsonInfo)treeView1.SelectedNode.Tag;
ryCommon.RyFiles.CopyToClip(item.name); ryCommon.RyFiles.CopyToClip(item.name);
} }
private void ToolStripMenuItem_Click(object sender, EventArgs e) private void ToolStripMenuItem_Click(object sender, EventArgs e)
{ {
if (treeView1.SelectedNode == null) { return; } if (treeView1.SelectedNode == null) { return; }
if (treeView1.SelectedNode.Tag == null) { return; } if (treeView1.SelectedNode.Tag == null) { return; }
JsonInfo item = (JsonInfo)treeView1.SelectedNode.Tag; JsonInfo item = (JsonInfo)treeView1.SelectedNode.Tag;
ryCommon.RyFiles.CopyToClip(item.value); ryCommon.RyFiles.CopyToClip(item.value);
} }
private void BtnPasteJson_Click(object sender, EventArgs e) private void BtnPasteJson_Click(object sender, EventArgs e)
{ {
textEditorControl1.BeginUpdate(); textEditorControl1.BeginUpdate();
textEditorControl1.Document.TextContent = Clipboard.GetText(); textEditorControl1.Document.TextContent = Clipboard.GetText();
textEditorControl1.Refresh(); textEditorControl1.Refresh();
textEditorControl1.EndUpdate(); textEditorControl1.EndUpdate();
BtnFormat.PerformClick(); BtnFormat.PerformClick();
} }
private void BtnCopyJson_Click(object sender, EventArgs e) private void BtnCopyJson_Click(object sender, EventArgs e)
{ {
ryCommon.RyFiles.CopyToClip(textEditorControl1.Text); ryCommon.RyFiles.CopyToClip(textEditorControl1.Text);
} }
private void FrmJson_Load(object sender, EventArgs e) private void FrmJson_Load(object sender, EventArgs e)
{ {
textEditorControl1.Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategy("JSON"); textEditorControl1.Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategy("JSON");
} }
private void TreeView1_MouseDown(object sender, MouseEventArgs e) private void TreeView1_MouseDown(object sender, MouseEventArgs e)
{ {
if (e.Button == MouseButtons.Right)//判断你点的是不是右键 if (e.Button == MouseButtons.Right)//判断你点的是不是右键
{ {
Point ClickPoint = new Point(e.X, e.Y); Point ClickPoint = new Point(e.X, e.Y);
TreeNode CurrentNode = treeView1.GetNodeAt(ClickPoint); TreeNode CurrentNode = treeView1.GetNodeAt(ClickPoint);
if (CurrentNode != null)//判断你点的是不是一个节点 if (CurrentNode != null)//判断你点的是不是一个节点
{ {
treeView1.SelectedNode = CurrentNode;//选中这个节点 treeView1.SelectedNode = CurrentNode;//选中这个节点
} }
} }
} }
private void ToolStripMenuItem_Click(object sender, EventArgs e) private void ToolStripMenuItem_Click(object sender, EventArgs e)
{ {
treeView1.ExpandAll(); treeView1.ExpandAll();
} }
private void ToolStripMenuItem_Click(object sender, EventArgs e) private void ToolStripMenuItem_Click(object sender, EventArgs e)
{ {
treeView1.CollapseAll(); treeView1.CollapseAll();
} }
private void CopyJsonByCHS_Click(object sender, EventArgs e) private void CopyJsonByCHS_Click(object sender, EventArgs e)
{ {
try try
{ {
JObject jo = (JObject)JsonConvert.DeserializeObject(textEditorControl1.Text); JObject jo = (JObject)JsonConvert.DeserializeObject(textEditorControl1.Text);
var aa = Newtonsoft.Json.JsonConvert.SerializeObject(jo, new Newtonsoft.Json.JsonSerializerSettings() { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeNonAscii }); var aa = Newtonsoft.Json.JsonConvert.SerializeObject(jo, new Newtonsoft.Json.JsonSerializerSettings() { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeNonAscii });
ryCommon.RyFiles.CopyToClip(aa); ryCommon.RyFiles.CopyToClip(aa);
} }
catch(Exception ex) { catch(Exception ex) {
MessageBox.Show(ex.Message, "出错", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show(ex.Message, "出错", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
} }
private void textEditorControl1_TextChanged(object sender, EventArgs e) private void textEditorControl1_TextChanged(object sender, EventArgs e)
{ {
textEditorControl1.Document.FoldingManager.UpdateFoldings(null, null); textEditorControl1.Document.FoldingManager.UpdateFoldings(null, null);
} }
} }
public class JsonInfo public class JsonInfo
{ {
public string name = ""; public string name = "";
public string value = ""; public string value = "";
} }
} }

File diff suppressed because it is too large Load Diff