Пример #1
0
        /// <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;
            }
        }
Пример #2
0
        /// <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;
                    }
                }
            }
        }
Пример #3
0
        /// <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;
                    }
                    }
                }
            }
        }
Пример #4
0
        /// <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;
                    }
                    }
                }
            }
        }
Пример #5
0
        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;
                    }
                }
            }
        }
Пример #6
0
        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));
            }
        }