/// <summary> /// 测试对数字类型的处理 /// </summary> public static void Test5() { double a = 1.87E+02; JsonObject obj = new JsonObject(); obj.Add("num1", 1.87E+02); obj.Add("num2", -10); obj.Add("num3", -0.2); obj.Add("num4", +1024.88); JsonDocument doc = new JsonDocument(); doc.Object = obj; string val = doc.ToJson(); Console.WriteLine("生成的Json字符串:"); Console.WriteLine(val); string data = "{\"num1\":187E+0.2,\"num2\":-10,\"num3\":-0.2,\"num4\":+1024.88}"; JsonDocument d = JsonDocument.FromString(data); if (d.IsObject()) { JsonObject o = d.Object; } }
/// <summary> /// 测试Json解析 /// </summary> public static void Test2() { string data = "{\"student\":[{\"name\":\"Jim\",\"age\":8},{\"\name\":\"Tom\",\"age\":10}]}"; JsonDocument doc = JsonDocument.FromString(data); if (doc.IsObject()) { JsonObject jsobj = doc.Object; foreach (string key in jsobj.Keys) { switch (jsobj[key].Valuetype) { case JsonType.BOOL: Console.WriteLine("key={0},value={1}", key, jsobj[key].ToBool()); break; case JsonType.NUMBER: Console.WriteLine("key={0},value={1}", key, jsobj[key].ToInt()); break; case JsonType.STRING: { string ss = jsobj[key].ToString(); Console.WriteLine("key={0},value={1}", key, jsobj[key].ToString()); break; } case JsonType.ARRAY: foreach (JsonValue v in jsobj[key].ToArray()) { switch (v.Valuetype) { case JsonType.BOOL: Console.WriteLine("key={0}", v.ToBool()); break; case JsonType.NUMBER: Console.WriteLine("key={0}", v.ToInt()); break; case JsonType.STRING: Console.WriteLine("key={0}", v.ToString()); break; } } break; } } } }
/// <summary> /// 将一个Json字符串当作一个string数据, /// 测试对字符串中双引号的处理 /// </summary> public static void Test3() { JsonObject obj = new JsonObject(); obj.Add("test", "{\"student\":[{\"name\":\"Jim\",\"age\":8,\"goodboy\":true},{\"name\":\"Tom\",\"age\":10,\"goodboy\":false}]}"); JsonDocument doc = new JsonDocument(); doc.Object = obj; string val = doc.ToJson(); Console.WriteLine("生成的Json字符串:"); Console.WriteLine(val); JsonDocument d = JsonDocument.FromString(val); if (d.IsObject()) { JsonObject jsobj = d.Object; foreach (string key in jsobj.Keys) { switch (jsobj[key].Valuetype) { case JsonType.BOOL: Console.WriteLine("key={0},value={1}", key, jsobj[key].ToBool()); break; case JsonType.NUMBER: Console.WriteLine("key={0},value={1}", key, jsobj[key].ToInt()); break; case JsonType.STRING: { string ss = jsobj[key].ToString(); Console.WriteLine("key={0},value={1}", key, jsobj[key].ToString()); break; } } } } }
/// <summary> /// 测试对\的处理 /// </summary> public static void Test4() { JsonObject obj = new JsonObject(); obj.Add("test", "\\hello\\"); JsonDocument doc = new JsonDocument(); doc.Object = obj; string val = doc.ToJson(); Console.WriteLine("生成的Json字符串:"); Console.WriteLine(val); JsonDocument d = JsonDocument.FromString(val); if (d.IsObject()) { JsonObject jsobj = d.Object; foreach (string key in jsobj.Keys) { switch (jsobj[key].Valuetype) { case JsonType.BOOL: Console.WriteLine("key={0},value={1}", key, jsobj[key].ToBool()); break; case JsonType.NUMBER: Console.WriteLine("key={0},value={1}", key, jsobj[key].ToInt()); break; case JsonType.STRING: { string ss = jsobj[key].ToString(); Console.WriteLine("key={0},value={1}", key, jsobj[key].ToString()); break; } } } } }
public static void Main(string[] args) { JsonObject child = new JsonObject(); child["china"] = "hello"; child["shanghai"] = 123; child.Add("one", "abc"); child.Add("two", 12); child.Add("three", 44.9); JsonArray arr = new JsonArray(); arr[0] = true; arr[1] = 100; arr[2] = "你好"; arr.Add("12"); arr.Add(456); arr.Add(false); arr.Add(child); arr.Add(null); JsonObject obj = new JsonObject(); obj.Add("中国", "china"); obj.Add("北京", true); obj.Add("上海", 123); obj.Add("NULL", null); obj.Add("childobj", child); obj.Add("arrayvalue", arr); JsonDocument doc = new JsonDocument(); doc.Object = obj; string val = doc.ToJson(); Console.WriteLine("生成的Json字符串:"); Console.WriteLine(val); Console.WriteLine(); string data = "{\"中国\": \"china\",\"北京\": true,\"上海\": 123}"; doc = JsonDocument.FromString(data); if (doc.IsObject()) { JsonObject jsobj = doc.Object; foreach (string key in jsobj.Keys) { switch (jsobj[key].Valuetype) { case JsonType.BOOL: Console.WriteLine("key={0},value={1}", key, jsobj[key].ToBool()); break; case JsonType.NUMBER: Console.WriteLine("key={0},value={1}", key, jsobj[key].ToInt()); break; case JsonType.STRING: Console.WriteLine("key={0},value={1}", key, jsobj[key].ToString()); break; case JsonType.ARRAY: foreach (JsonValue v in jsobj[key].ToArray()) { switch (v.Valuetype) { case JsonType.BOOL: Console.WriteLine("key={0}", v.ToBool()); break; case JsonType.NUMBER: Console.WriteLine("key={0}", v.ToInt()); break; case JsonType.STRING: Console.WriteLine("key={0}", v.ToString()); break; } } break; } } } }
private void start() { int receiveLength = 0; while (true) { try { byte[] result = new byte[1024]; receiveLength = clientSocket.Receive(result); if (receiveLength == 0) { continue; } JsonDocument doc = JsonDocument.FromString(Encoding.Default.GetString(result, 2, receiveLength)); if (doc.IsObject()) { JsonObject jsobj = doc.Object; if (jsobj["type"].ToString() == "system") { string msg = "系统消息:"; if (jsobj["from"].ToString() == "login") { if (jsobj["content"].ToString() != "ok") { txt_msg.AppendText(msg + "登录失败,可能由用户名或ID不可用" + "\n"); } else { this.txt_msg.Invoke(new Action(() => { txt_msg.AppendText(msg + "登录成功" + "\n"); txt_msg.AppendText(msg + "当前在线人数 " + jsobj["user_list_count"].ToInt() + "人\n"); txt_msg.AppendText(msg + jsobj["user_list"].ToArray() + "人\n"); var a = jsobj["user_list"].ToArray(); for (int i = 0; i < a.Count; i++) { var b = a[i].ToObject(); switch (b["uid"].Valuetype) { case JsonType.STRING: txt_msg.AppendText(b["uid"].ToString() + "" + "\n"); break; case JsonType.NUMBER: txt_msg.AppendText(b["uid"].ToInt() + "" + "\n"); break; } } //jsobj["user_list"].ToArray(); })); } } } else { string msg = ""; if (jsobj["type"].ToString() == "user_msg") { if (jsobj["msg_type"].Valuetype == JsonType.STRING) { msg = unicode(jsobj["from"].ToString()) + " : "; } else { msg = jsobj["from"].ToInt() + " : "; } if (jsobj["msg_type"].ToString() == "txt") { if (jsobj["msg_type"].Valuetype == JsonType.STRING) { msg += unicode(jsobj["content"].ToString()); } else if (jsobj["msg_type"].Valuetype == JsonType.NUMBER) { msg += jsobj["content"].ToString(); } } } txt_msg.AppendText(msg + "\r\n"); } } else { Console.WriteLine(Encoding.Default.GetString(result, 2, receiveLength - 2) + "\n"); //clientSocket.Send(buffer); } } catch (Exception e) { txt_msg.AppendText("与服务端断开连接\n"); break; } //txt_msg.AppendText("接收服务器消息:{0}", Encoding.ASCII.GetString(result, 0, receiveLength)); } }