Пример #1
0
        public static string PrintJSON(JSONElement el)
        {
            string sortie = "";

            switch (el.Type)
            {
            case JSONElement.JSONType.DIC:
                sortie += "{";
                var count = el.key.Count - 1;
                for (int i = 0; i < count; i++)
                {
                    sortie += el.key[i] + ":";
                    sortie += PrintJSON(el.data[i]);
                    sortie += ",";
                }
                sortie += el.key[count] + ":";
                sortie += PrintJSON(el.data[count]);
                sortie += "}";
                break;

            case JSONElement.JSONType.BOOL:
                sortie += el.bool_value;
                break;

            case JSONElement.JSONType.NB:
                sortie += el.int_value;
                break;

            case JSONElement.JSONType.STR:
                sortie += el.string_value;
                break;

            case JSONElement.JSONType.LIST:
                sortie += "[";
                //Console.WriteLine(el.data.Count);
                var countlist = el.data.Count - 1;
                for (int i = 0; i < countlist; i++)
                {
                    sortie += PrintJSON(el.data[i]);
                    sortie += ",";
                }
                sortie += PrintJSON(el.data[countlist]);
                sortie += "]";
                break;

            default:
                sortie += "PTDR nope";
                break;
            }
            return(sortie);
        }
Пример #2
0
 public static JSONElement SearchJSON(JSONElement element, string key)
 {
     for (int i = 0; i < element.key.Count; i++)
     {
         if (element.key[i] == key)
         {
             return(element.data[i]);
         }
         else if (element.data[i].Type == JSONElement.JSONType.DIC)
         {
             return(SearchJSON(element.data[i], key));
         }
     }
     return(null);
 }
Пример #3
0
 public void Add(string key, JSONElement data)
 {
     this.key.Add(key);
     this.data.Add(data);
 }
Пример #4
0
        public static JSONElement ParseJSONString(string json, ref int index)
        {
            var         len = json.Length;
            JSONElement obj = new JSONElement(JSONElement.JSONType.DIC);
            JSONElement val;
            bool        cle = true;

            while (index < len && json[index] != '}')
            {
                if (json[index] == ':')
                {
                    cle = false;
                    index++;
                }
                else if (json[index] == ',')
                {
                    cle = true;
                    index++;
                }
                else
                {
                    switch (GetJsonType(json[index]))
                    {
                    case JSONElement.JSONType.BOOL:
                        val            = new JSONElement(JSONElement.JSONType.BOOL);
                        val.bool_value = ParseBool(json, ref index);
                        index++;
                        break;

                    case JSONElement.JSONType.STR:
                        if (cle)
                        {
                            obj.key.Add(ParseString(json, ref index));
                        }
                        else
                        {
                            val = new JSONElement(JSONElement.JSONType.STR);
                            val.string_value = ParseString(json, ref index);
                            obj.data.Add(val);
                        }
                        index++;
                        break;

                    case JSONElement.JSONType.NB:
                        val           = new JSONElement(JSONElement.JSONType.NB);
                        val.int_value = ParseInt(json, ref index);
                        obj.data.Add(val);
                        break;

                    case JSONElement.JSONType.LIST:
                        val = new JSONElement(JSONElement.JSONType.LIST);
                        while (index < len && json[index] != ']')
                        {
                            EatBlank(json, ref index);
                            switch (GetJsonType(json[index]))
                            {
                            case JSONElement.JSONType.BOOL:
                                JSONElement b = new JSONElement(JSONElement.JSONType.BOOL);
                                b.bool_value = ParseBool(json, ref index);
                                val.data.Add(b);
                                index++;
                                break;

                            case JSONElement.JSONType.STR:
                                JSONElement s = new JSONElement(JSONElement.JSONType.STR);
                                s.string_value = ParseString(json, ref index);
                                val.data.Add(s);
                                break;

                            case JSONElement.JSONType.NB:
                                JSONElement n = new JSONElement(JSONElement.JSONType.NB);
                                n.int_value = ParseInt(json, ref index);
                                val.data.Add(n);
                                index++;
                                break;

                            case JSONElement.JSONType.DIC:
                                JSONElement d = new JSONElement(JSONElement.JSONType.DIC);
                                d = ParseJSONString(json, ref index);
                                val.data.Add(d);
                                break;

                            default:
                                index++;
                                break;
                            }
                        }
                        obj.data.Add(val);
                        break;

                    case JSONElement.JSONType.DIC:
                        val = new JSONElement(JSONElement.JSONType.DIC);
                        index++;
                        val = ParseJSONString(json, ref index);
                        obj.data.Add(val);
                        break;

                    default:
                        val = new JSONElement(JSONElement.JSONType.NULL);
                        obj.data.Add(val);
                        break;
                    }
                }
            }
            index++;

            return(obj);
        }