Best Vstest code snippet using SimpleJSON.LinqEnumerator.JSONNumber
SimpleJSON.cs
Source:SimpleJSON.cs  
...38 * [2017-03-08 Update]39 * - Optimised parsing by using a StringBuilder for token. This prevents performance issues when large40 *   string data fields are contained in the json data.41 * - Finally refactored the badly named JSONClass into JSONObject.42 * - Replaced the old JSONData class by distict typed classes ( JSONString, JSONNumber, JSONBool, JSONNull ) this43 *   allows to propertly convert the node tree back to json without type information loss. The actual value44 *   parsing now happens at parsing time and not when you actually access one of the casting properties.45 * 46 * [2017-04-11 Update]47 * - Fixed parsing bug where empty string values have been ignored.48 * - Optimised "ToString" by using a StringBuilder internally. This should heavily improve performance for large files49 * - Changed the overload of "ToString(string aIndent)" to "ToString(int aIndent)"50 * 51 * [2017-11-29 Update]52 * - Removed the IEnumerator implementations on JSONArray & JSONObject and replaced it with a common53 *   struct Enumerator in JSONNode that should avoid garbage generation. The enumerator always works54 *   on KeyValuePair<string, JSONNode>, even for JSONArray.55 * - Added two wrapper Enumerators that allows for easy key or value enumeration. A JSONNode now has56 *   a "Keys" and a "Values" enumerable property. Those are also struct enumerators / enumerables57 * - A KeyValuePair<string, JSONNode> can now be implicitly converted into a JSONNode. This allows58 *   a foreach loop over a JSONNode to directly access the values only. Since KeyValuePair as well as59 *   all the Enumerators are structs, no garbage is allocated.60 * - To add Linq support another "LinqEnumerator" is available through the "Linq" property. This61 *   enumerator does implement the generic IEnumerable interface so most Linq extensions can be used62 *   on this enumerable object. This one does allocate memory as it's a wrapper class.63 * - The Escape method now escapes all control characters (# < 32) in strings as uncode characters64 *   (\uXXXX) and if the static bool JSONNode.forceASCII is set to true it will also escape all65 *   characters # > 127. This might be useful if you require an ASCII output. Though keep in mind66 *   when your strings contain many non-ascii characters the strings become much longer (x6) and are67 *   no longer human readable.68 * - The node types JSONObject and JSONArray now have an "Inline" boolean switch which will default to69 *   false. It can be used to serialize this element inline even you serialize with an indented format70 *   This is useful for arrays containing numbers so it doesn't place every number on a new line71 * - Extracted the binary serialization code into a seperate extension file. All classes are now declared72 *   as "partial" so an extension file can even add a new virtual or abstract method / interface to73 *   JSONNode and override it in the concrete type classes. It's of course a hacky approach which is74 *   generally not recommended, but i wanted to keep everything tightly packed.75 * - Added a static CreateOrGet method to the JSONNull class. Since this class is immutable it could76 *   be reused without major problems. If you have a lot null fields in your data it will help reduce77 *   the memory / garbage overhead. I also added a static setting (reuseSameInstance) to JSONNull78 *   (default is true) which will change the behaviour of "CreateOrGet". If you set this to false79 *   CreateOrGet will not reuse the cached instance but instead create a new JSONNull instance each time.80 *   I made the JSONNull constructor private so if you need to create an instance manually use81 *   JSONNull.CreateOrGet()82 * 83 * [2018-01-09 Update]84 * - Changed all double.TryParse and double.ToString uses to use the invariant culture to avoid problems85 *   on systems with a culture that uses a comma as decimal point.86 * 87 * [2018-01-26 Update]88 * - Added AsLong. Note that a JSONNumber is stored as double and can't represent all long values. However89 *   storing it as string would work.90 * - Added static setting "JSONNode.longAsString" which controls the default type that is used by the91 *   LazyCreator when using AsLong92 * 93 * 94 * The MIT License (MIT)95 * 96 * Copyright (c) 2012-2017 Markus Göbel (Bunny83)97 * 98 * Permission is hereby granted, free of charge, to any person obtaining a copy99 * of this software and associated documentation files (the "Software"), to deal100 * in the Software without restriction, including without limitation the rights101 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell102 * copies of the Software, and to permit persons to whom the Software is103 * furnished to do so, subject to the following conditions:104 * 105 * The above copyright notice and this permission notice shall be included in all106 * copies or substantial portions of the Software.107 * 108 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR109 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,110 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE111 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER112 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,113 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE114 * SOFTWARE.115 * 116 * * * * */117using System;118using System.Collections;119using System.Collections.Generic;120using System.Globalization;121using System.Linq;122using System.Text;123namespace ThirdParty.SimpleJSON124{125    public enum JSONNodeType126    {127        Array = 1,128        Object = 2,129        String = 3,130        Number = 4,131        NullValue = 5,132        Boolean = 6,133        None = 7,134        Custom = 0xFF,135    }136    public enum JSONTextMode137    {138        Compact,139        Indent140    }141    public abstract partial class JSONNode142    {143        #region Enumerators144        public struct Enumerator145        {146            enum Type { None, Array, Object }147            Type type;148            Dictionary<string, global::ThirdParty.SimpleJSON.JSONNode>.Enumerator m_Object;149            List<global::ThirdParty.SimpleJSON.JSONNode>.Enumerator m_Array;150            public bool IsValid { get { return type != Type.None; } }151            public Enumerator(List<global::ThirdParty.SimpleJSON.JSONNode>.Enumerator aArrayEnum)152            {153                type = Type.Array;154                m_Object = default(Dictionary<string, global::ThirdParty.SimpleJSON.JSONNode>.Enumerator);155                m_Array = aArrayEnum;156            }157            public Enumerator(Dictionary<string, global::ThirdParty.SimpleJSON.JSONNode>.Enumerator aDictEnum)158            {159                type = Type.Object;160                m_Object = aDictEnum;161                m_Array = default(List<global::ThirdParty.SimpleJSON.JSONNode>.Enumerator);162            }163            public KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode> Current164            {165                get {166                    if (type == Type.Array)167                        return new KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode>(string.Empty, m_Array.Current);168                    else if (type == Type.Object)169                        return m_Object.Current;170                    return new KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode>(string.Empty, null);171                }172            }173            public bool MoveNext()174            {175                if (type == Type.Array)176                    return m_Array.MoveNext();177                else if (type == Type.Object)178                    return m_Object.MoveNext();179                return false;180            }181        }182        public struct ValueEnumerator183        {184            Enumerator m_Enumerator;185            public ValueEnumerator(List<global::ThirdParty.SimpleJSON.JSONNode>.Enumerator aArrayEnum) : this(new Enumerator(aArrayEnum)) { }186            public ValueEnumerator(Dictionary<string, global::ThirdParty.SimpleJSON.JSONNode>.Enumerator aDictEnum) : this(new Enumerator(aDictEnum)) { }187            public ValueEnumerator(Enumerator aEnumerator) { m_Enumerator = aEnumerator; }188            public global::ThirdParty.SimpleJSON.JSONNode Current { get { return m_Enumerator.Current.Value; } }189            public bool MoveNext() { return m_Enumerator.MoveNext(); }190            public ValueEnumerator GetEnumerator() { return this; }191        }192        public struct KeyEnumerator193        {194            Enumerator m_Enumerator;195            public KeyEnumerator(List<global::ThirdParty.SimpleJSON.JSONNode>.Enumerator aArrayEnum) : this(new Enumerator(aArrayEnum)) { }196            public KeyEnumerator(Dictionary<string, global::ThirdParty.SimpleJSON.JSONNode>.Enumerator aDictEnum) : this(new Enumerator(aDictEnum)) { }197            public KeyEnumerator(Enumerator aEnumerator) { m_Enumerator = aEnumerator; }198            public global::ThirdParty.SimpleJSON.JSONNode Current { get { return m_Enumerator.Current.Key; } }199            public bool MoveNext() { return m_Enumerator.MoveNext(); }200            public KeyEnumerator GetEnumerator() { return this; }201        }202        public class LinqEnumerator : IEnumerator<KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode>>, IEnumerable<KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode>>203        {204            global::ThirdParty.SimpleJSON.JSONNode m_Node;205            Enumerator m_Enumerator;206            internal LinqEnumerator(global::ThirdParty.SimpleJSON.JSONNode aNode)207            {208                m_Node = aNode;209                if (m_Node != null)210                    m_Enumerator = m_Node.GetEnumerator();211            }212            public KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode> Current { get { return m_Enumerator.Current; } }213            object IEnumerator.Current { get { return m_Enumerator.Current; } }214            public bool MoveNext() { return m_Enumerator.MoveNext(); }215            public void Dispose()216            {217                m_Node = null;218                m_Enumerator = new Enumerator();219            }220            public IEnumerator<KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode>> GetEnumerator()221            {222                return new LinqEnumerator(m_Node);223            }224            public void Reset()225            {226                if (m_Node != null)227                    m_Enumerator = m_Node.GetEnumerator();228            }229            IEnumerator IEnumerable.GetEnumerator()230            {231                return new LinqEnumerator(m_Node);232            }233        }234        #endregion Enumerators235        #region common interface236        public static bool forceASCII = false; // Use Unicode by default237        public static bool longAsString = false; // lazy creator creates a JSONString instead of JSONNumber238        public abstract JSONNodeType Tag { get; }239        public virtual global::ThirdParty.SimpleJSON.JSONNode this[int aIndex] { get { return null; } set { } }240        public virtual global::ThirdParty.SimpleJSON.JSONNode this[string aKey] { get { return null; } set { } }241        public virtual string Value { get { return ""; } set { } }242        public virtual int Count { get { return 0; } }243        public virtual bool IsNumber { get { return false; } }244        public virtual bool IsString { get { return false; } }245        public virtual bool IsBoolean { get { return false; } }246        public virtual bool IsNull { get { return false; } }247        public virtual bool IsArray { get { return false; } }248        public virtual bool IsObject { get { return false; } }249        public virtual bool Inline { get { return false; } set { } }250        public virtual void Add(string aKey, global::ThirdParty.SimpleJSON.JSONNode aItem)251        {252        }253        public virtual void Add(global::ThirdParty.SimpleJSON.JSONNode aItem)254        {255            Add("", aItem);256        }257        public virtual global::ThirdParty.SimpleJSON.JSONNode Remove(string aKey)258        {259            return null;260        }261        public virtual global::ThirdParty.SimpleJSON.JSONNode Remove(int aIndex)262        {263            return null;264        }265        public virtual global::ThirdParty.SimpleJSON.JSONNode Remove(global::ThirdParty.SimpleJSON.JSONNode aNode)266        {267            return aNode;268        }269        public virtual IEnumerable<global::ThirdParty.SimpleJSON.JSONNode> Children270        {271            get272            {273                yield break;274            }275        }276        public IEnumerable<global::ThirdParty.SimpleJSON.JSONNode> DeepChildren277        {278            get279            {280                foreach (global::ThirdParty.SimpleJSON.JSONNode C in Children)281                    foreach (global::ThirdParty.SimpleJSON.JSONNode D in C.DeepChildren)282                        yield return D;283            }284        }285        public override string ToString()286        {287            StringBuilder sb = new StringBuilder();288            WriteToStringBuilder(sb, 0, 0, JSONTextMode.Compact);289            return sb.ToString();290        }291        public virtual string ToString(int aIndent)292        {293            StringBuilder sb = new StringBuilder();294            WriteToStringBuilder(sb, 0, aIndent, JSONTextMode.Indent);295            return sb.ToString();296        }297        internal abstract void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode);298        public abstract Enumerator GetEnumerator();299        public IEnumerable<KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode>> Linq { get { return new LinqEnumerator(this); } }300        public KeyEnumerator Keys { get { return new KeyEnumerator(GetEnumerator()); } }301        public ValueEnumerator Values { get { return new ValueEnumerator(GetEnumerator()); } }302        #endregion common interface303        #region typecasting properties304        public virtual double AsDouble305        {306            get307            {308                double v = 0.0;309                if (double.TryParse(Value,NumberStyles.Float, CultureInfo.InvariantCulture, out v))310                    return v;311                return 0.0;312            }313            set314            {315                Value = value.ToString(CultureInfo.InvariantCulture);316            }317        }318        public virtual int AsInt319        {320            get { return (int)AsDouble; }321            set { AsDouble = value; }322        }323        public virtual float AsFloat324        {325            get { return (float)AsDouble; }326            set { AsDouble = value; }327        }328        public virtual bool AsBool329        {330            get331            {332                bool v = false;333                if (bool.TryParse(Value, out v))334                    return v;335                return !string.IsNullOrEmpty(Value);336            }337            set338            {339                Value = (value) ? "true" : "false";340            }341        }342        public virtual long AsLong343        {344            get345            {346                long val = 0;347                if (long.TryParse(Value, out val))348                    return val;349                return 0L;350            }351            set352            {353                Value = value.ToString();354            }355        }356        public virtual global::ThirdParty.SimpleJSON.JSONArray AsArray357        {358            get359            {360                return this as global::ThirdParty.SimpleJSON.JSONArray;361            }362        }363        public virtual global::ThirdParty.SimpleJSON.JSONObject AsObject364        {365            get366            {367                return this as global::ThirdParty.SimpleJSON.JSONObject;368            }369        }370        #endregion typecasting properties371        #region operators372        public static implicit operator global::ThirdParty.SimpleJSON.JSONNode(string s)373        {374            return new global::ThirdParty.SimpleJSON.JSONString(s);375        }376        public static implicit operator string(global::ThirdParty.SimpleJSON.JSONNode d)377        {378            return (d == null) ? null : d.Value;379        }380        public static implicit operator global::ThirdParty.SimpleJSON.JSONNode(double n)381        {382            return new global::ThirdParty.SimpleJSON.JSONNumber(n);383        }384        public static implicit operator double(global::ThirdParty.SimpleJSON.JSONNode d)385        {386            return (d == null) ? 0 : d.AsDouble;387        }388        public static implicit operator global::ThirdParty.SimpleJSON.JSONNode(float n)389        {390            return new global::ThirdParty.SimpleJSON.JSONNumber(n);391        }392        public static implicit operator float(global::ThirdParty.SimpleJSON.JSONNode d)393        {394            return (d == null) ? 0 : d.AsFloat;395        }396        public static implicit operator global::ThirdParty.SimpleJSON.JSONNode(int n)397        {398            return new global::ThirdParty.SimpleJSON.JSONNumber(n);399        }400        public static implicit operator int(global::ThirdParty.SimpleJSON.JSONNode d)401        {402            return (d == null) ? 0 : d.AsInt;403        }404        public static implicit operator global::ThirdParty.SimpleJSON.JSONNode(long n)405        {406            return new global::ThirdParty.SimpleJSON.JSONNumber(n);407        }408        public static implicit operator long(global::ThirdParty.SimpleJSON.JSONNode d)409        {410            return (d == null) ? 0L : d.AsLong;411        }412        public static implicit operator global::ThirdParty.SimpleJSON.JSONNode(bool b)413        {414            return new global::ThirdParty.SimpleJSON.JSONBool(b);415        }416        public static implicit operator bool(global::ThirdParty.SimpleJSON.JSONNode d)417        {418            return (d == null) ? false : d.AsBool;419        }420        public static implicit operator global::ThirdParty.SimpleJSON.JSONNode(KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode> aKeyValue)421        {422            return aKeyValue.Value;423        }424        public static bool operator ==(global::ThirdParty.SimpleJSON.JSONNode a, object b)425        {426            if (ReferenceEquals(a, b))427                return true;428            bool aIsNull = a is global::ThirdParty.SimpleJSON.JSONNull || ReferenceEquals(a, null) || a is global::ThirdParty.SimpleJSON.JSONLazyCreator;429            bool bIsNull = b is global::ThirdParty.SimpleJSON.JSONNull || ReferenceEquals(b, null) || b is global::ThirdParty.SimpleJSON.JSONLazyCreator;430            if (aIsNull && bIsNull)431                return true;432            return !aIsNull && a.Equals(b);433        }434        public static bool operator !=(global::ThirdParty.SimpleJSON.JSONNode a, object b)435        {436            return !(a == b);437        }438        public override bool Equals(object obj)439        {440            return ReferenceEquals(this, obj);441        }442        public override int GetHashCode()443        {444            return base.GetHashCode();445        }446        #endregion operators447        [ThreadStatic]448        static StringBuilder m_EscapeBuilder;449        internal static StringBuilder EscapeBuilder450        {451            get {452                if (m_EscapeBuilder == null)453                    m_EscapeBuilder = new StringBuilder();454                return m_EscapeBuilder;455            }456        }457        internal static string Escape(string aText)458        {459            StringBuilder sb = EscapeBuilder;460            sb.Length = 0;461            if (sb.Capacity < aText.Length + aText.Length / 10)462                sb.Capacity = aText.Length + aText.Length / 10;463            foreach (char c in aText)464            {465                switch (c)466                {467                    case '\\':468                        sb.Append("\\\\");469                        break;470                    case '\"':471                        sb.Append("\\\"");472                        break;473                    case '\n':474                        sb.Append("\\n");475                        break;476                    case '\r':477                        sb.Append("\\r");478                        break;479                    case '\t':480                        sb.Append("\\t");481                        break;482                    case '\b':483                        sb.Append("\\b");484                        break;485                    case '\f':486                        sb.Append("\\f");487                        break;488                    default:489                        if (c < ' ' || (forceASCII && c > 127))490                        {491                            ushort val = c;492                            sb.Append("\\u").Append(val.ToString("X4"));493                        }494                        else495                            sb.Append(c);496                        break;497                }498            }499            string result = sb.ToString();500            sb.Length = 0;501            return result;502        }503        static void ParseElement(global::ThirdParty.SimpleJSON.JSONNode ctx, string token, string tokenName, bool quoted)504        {505            if (quoted)506            {507                ctx.Add(tokenName, token);508                return;509            }510            string tmp = token.ToLower();511            if (tmp == "false" || tmp == "true")512                ctx.Add(tokenName, tmp == "true");513            else if (tmp == "null")514                ctx.Add(tokenName, null);515            else516            {517                double val;518                if (double.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out val))519                    ctx.Add(tokenName, val);520                else521                    ctx.Add(tokenName, token);522            }523        }524        public static global::ThirdParty.SimpleJSON.JSONNode Parse(string aJSON)525        {526            Stack<global::ThirdParty.SimpleJSON.JSONNode> stack = new Stack<global::ThirdParty.SimpleJSON.JSONNode>();527            global::ThirdParty.SimpleJSON.JSONNode ctx = null;528            int i = 0;529            StringBuilder Token = new StringBuilder();530            string TokenName = "";531            bool QuoteMode = false;532            bool TokenIsQuoted = false;533            while (i < aJSON.Length) {534                switch (aJSON[i])535                {536                    case '{':537                        if (QuoteMode)538                        {539                            Token.Append(aJSON[i]);540                            break;541                        }542                        stack.Push(new global::ThirdParty.SimpleJSON.JSONObject());543                        if (ctx != null)544                        {545                            ctx.Add(TokenName, stack.Peek());546                        }547                        TokenName = "";548                        Token.Length = 0;549                        ctx = stack.Peek();550                        break;551                    case '[':552                        if (QuoteMode)553                        {554                            Token.Append(aJSON[i]);555                            break;556                        }557                        stack.Push(new global::ThirdParty.SimpleJSON.JSONArray());558                        if (ctx != null)559                        {560                            ctx.Add(TokenName, stack.Peek());561                        }562                        TokenName = "";563                        Token.Length = 0;564                        ctx = stack.Peek();565                        break;566                    case '}':567                    case ']':568                        if (QuoteMode)569                        {570                            Token.Append(aJSON[i]);571                            break;572                        }573                        if (stack.Count == 0)574                            throw new Exception("JSON Parse: Too many closing brackets");575                        stack.Pop();576                        if (Token.Length > 0 || TokenIsQuoted)577                        {578                            ParseElement(ctx, Token.ToString(), TokenName, TokenIsQuoted);579                            TokenIsQuoted = false;580                        }581                        TokenName = "";582                        Token.Length = 0;583                        if (stack.Count > 0)584                            ctx = stack.Peek();585                        break;586                    case ':':587                        if (QuoteMode)588                        {589                            Token.Append(aJSON[i]);590                            break;591                        }592                        TokenName = Token.ToString();593                        Token.Length = 0;594                        TokenIsQuoted = false;595                        break;596                    case '"':597                        QuoteMode ^= true;598                        TokenIsQuoted |= QuoteMode;599                        break;600                    case ',':601                        if (QuoteMode)602                        {603                            Token.Append(aJSON[i]);604                            break;605                        }606                        if (Token.Length > 0 || TokenIsQuoted)607                        {608                            ParseElement(ctx, Token.ToString(), TokenName, TokenIsQuoted);609                            TokenIsQuoted = false;610                        }611                        TokenName = "";612                        Token.Length = 0;613                        TokenIsQuoted = false;614                        break;615                    case '\r':616                    case '\n':617                        break;618                    case ' ':619                    case '\t':620                        if (QuoteMode)621                            Token.Append(aJSON[i]);622                        break;623                    case '\\':624                        ++i;625                        if (QuoteMode)626                        {627                            char C = aJSON[i];628                            switch (C)629                            {630                                case 't':631                                    Token.Append('\t');632                                    break;633                                case 'r':634                                    Token.Append('\r');635                                    break;636                                case 'n':637                                    Token.Append('\n');638                                    break;639                                case 'b':640                                    Token.Append('\b');641                                    break;642                                case 'f':643                                    Token.Append('\f');644                                    break;645                                case 'u':646                                    {647                                        string s = aJSON.Substring(i + 1, 4);648                                        Token.Append((char)int.Parse(649                                            s,650                                            System.Globalization.NumberStyles.AllowHexSpecifier));651                                        i += 4;652                                        break;653                                    }654                                default:655                                    Token.Append(C);656                                    break;657                            }658                        }659                        break;660                    default:661                        Token.Append(aJSON[i]);662                        break;663                }664                ++i;665            }666            if (QuoteMode)667            {668                throw new Exception("JSON Parse: Quotation marks seems to be messed up.");669            }670            return ctx;671        }672    }673    // End of JSONNode674    public partial class JSONArray : global::ThirdParty.SimpleJSON.JSONNode675    {676        List<global::ThirdParty.SimpleJSON.JSONNode> m_List = new List<global::ThirdParty.SimpleJSON.JSONNode>();677        bool inline = false;678        public override bool Inline679        {680            get { return inline; }681            set { inline = value; }682        }683        public override JSONNodeType Tag { get { return JSONNodeType.Array; } }684        public override bool IsArray { get { return true; } }685        public override Enumerator GetEnumerator() { return new Enumerator(m_List.GetEnumerator()); }686        public override global::ThirdParty.SimpleJSON.JSONNode this[int aIndex]687        {688            get689            {690                if (aIndex < 0 || aIndex >= m_List.Count)691                    return new global::ThirdParty.SimpleJSON.JSONLazyCreator(this);692                return m_List[aIndex];693            }694            set695            {696                if (value == null)697                    value = global::ThirdParty.SimpleJSON.JSONNull.CreateOrGet();698                if (aIndex < 0 || aIndex >= m_List.Count)699                    m_List.Add(value);700                else701                    m_List[aIndex] = value;702            }703        }704        public override global::ThirdParty.SimpleJSON.JSONNode this[string aKey]705        {706            get { return new global::ThirdParty.SimpleJSON.JSONLazyCreator(this); }707            set708            {709                if (value == null)710                    value = global::ThirdParty.SimpleJSON.JSONNull.CreateOrGet();711                m_List.Add(value);712            }713        }714        public override int Count715        {716            get { return m_List.Count; }717        }718        public override void Add(string aKey, global::ThirdParty.SimpleJSON.JSONNode aItem)719        {720            if (aItem == null)721                aItem = global::ThirdParty.SimpleJSON.JSONNull.CreateOrGet();722            m_List.Add(aItem);723        }724        public override global::ThirdParty.SimpleJSON.JSONNode Remove(int aIndex)725        {726            if (aIndex < 0 || aIndex >= m_List.Count)727                return null;728            global::ThirdParty.SimpleJSON.JSONNode tmp = m_List[aIndex];729            m_List.RemoveAt(aIndex);730            return tmp;731        }732        public override global::ThirdParty.SimpleJSON.JSONNode Remove(global::ThirdParty.SimpleJSON.JSONNode aNode)733        {734            m_List.Remove(aNode);735            return aNode;736        }737        public override IEnumerable<global::ThirdParty.SimpleJSON.JSONNode> Children738        {739            get740            {741                foreach (global::ThirdParty.SimpleJSON.JSONNode N in m_List)742                    yield return N;743            }744        }745        internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode)746        {747            aSB.Append('[');748            int count = m_List.Count;749            if (inline)750                aMode = JSONTextMode.Compact;751            for (int i = 0; i < count; i++)752            {753                if (i > 0)754                    aSB.Append(',');755                if (aMode == JSONTextMode.Indent)756                    aSB.AppendLine();757                if (aMode == JSONTextMode.Indent)758                    aSB.Append(' ', aIndent + aIndentInc);759                m_List[i].WriteToStringBuilder(aSB, aIndent + aIndentInc, aIndentInc, aMode);760            }761            if (aMode == JSONTextMode.Indent)762                aSB.AppendLine().Append(' ', aIndent);763            aSB.Append(']');764        }765    }766    // End of JSONArray767    public partial class JSONObject : global::ThirdParty.SimpleJSON.JSONNode768    {769        Dictionary<string, global::ThirdParty.SimpleJSON.JSONNode> m_Dict = new Dictionary<string, global::ThirdParty.SimpleJSON.JSONNode>();770        bool inline = false;771        public override bool Inline772        {773            get { return inline; }774            set { inline = value; }775        }776        public override JSONNodeType Tag { get { return JSONNodeType.Object; } }777        public override bool IsObject { get { return true; } }778        public override Enumerator GetEnumerator() { return new Enumerator(m_Dict.GetEnumerator()); }779        public override global::ThirdParty.SimpleJSON.JSONNode this[string aKey]780        {781            get782            {783                if (m_Dict.ContainsKey(aKey))784                    return m_Dict[aKey];785                else786                    return new global::ThirdParty.SimpleJSON.JSONLazyCreator(this, aKey);787            }788            set789            {790                if (value == null)791                    value = global::ThirdParty.SimpleJSON.JSONNull.CreateOrGet();792                if (m_Dict.ContainsKey(aKey))793                    m_Dict[aKey] = value;794                else795                    m_Dict.Add(aKey, value);796            }797        }798        public override global::ThirdParty.SimpleJSON.JSONNode this[int aIndex]799        {800            get801            {802                if (aIndex < 0 || aIndex >= m_Dict.Count)803                    return null;804                return m_Dict.ElementAt(aIndex).Value;805            }806            set807            {808                if (value == null)809                    value = global::ThirdParty.SimpleJSON.JSONNull.CreateOrGet();810                if (aIndex < 0 || aIndex >= m_Dict.Count)811                    return;812                string key = m_Dict.ElementAt(aIndex).Key;813                m_Dict[key] = value;814            }815        }816        public override int Count817        {818            get { return m_Dict.Count; }819        }820        public override void Add(string aKey, global::ThirdParty.SimpleJSON.JSONNode aItem)821        {822            if (aItem == null)823                aItem = global::ThirdParty.SimpleJSON.JSONNull.CreateOrGet();824            if (!string.IsNullOrEmpty(aKey))825            {826                if (m_Dict.ContainsKey(aKey))827                    m_Dict[aKey] = aItem;828                else829                    m_Dict.Add(aKey, aItem);830            }831            else832                m_Dict.Add(Guid.NewGuid().ToString(), aItem);833        }834        public override global::ThirdParty.SimpleJSON.JSONNode Remove(string aKey)835        {836            if (!m_Dict.ContainsKey(aKey))837                return null;838            global::ThirdParty.SimpleJSON.JSONNode tmp = m_Dict[aKey];839            m_Dict.Remove(aKey);840            return tmp;841        }842        public override global::ThirdParty.SimpleJSON.JSONNode Remove(int aIndex)843        {844            if (aIndex < 0 || aIndex >= m_Dict.Count)845                return null;846            KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode> item = m_Dict.ElementAt(aIndex);847            m_Dict.Remove(item.Key);848            return item.Value;849        }850        public override global::ThirdParty.SimpleJSON.JSONNode Remove(global::ThirdParty.SimpleJSON.JSONNode aNode)851        {852            try853            {854                KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode> item = m_Dict.Where(k => k.Value == aNode).First();855                m_Dict.Remove(item.Key);856                return aNode;857            }858            catch859            {860                return null;861            }862        }863        public override IEnumerable<global::ThirdParty.SimpleJSON.JSONNode> Children864        {865            get866            {867                foreach (KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode> N in m_Dict)868                    yield return N.Value;869            }870        }871        internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode)872        {873            aSB.Append('{');874            bool first = true;875            if (inline)876                aMode = JSONTextMode.Compact;877            foreach (KeyValuePair<string, global::ThirdParty.SimpleJSON.JSONNode> k in m_Dict)878            {879                if (!first)880                    aSB.Append(',');881                first = false;882                if (aMode == JSONTextMode.Indent)883                    aSB.AppendLine();884                if (aMode == JSONTextMode.Indent)885                    aSB.Append(' ', aIndent + aIndentInc);886                aSB.Append('\"').Append(Escape(k.Key)).Append('\"');887                if (aMode == JSONTextMode.Compact)888                    aSB.Append(':');889                else890                    aSB.Append(" : ");891                k.Value.WriteToStringBuilder(aSB, aIndent + aIndentInc, aIndentInc, aMode);892            }893            if (aMode == JSONTextMode.Indent)894                aSB.AppendLine().Append(' ', aIndent);895            aSB.Append('}');896        }897    }898    // End of JSONObject899    public partial class JSONString : global::ThirdParty.SimpleJSON.JSONNode900    {901        string m_Data;902        public override JSONNodeType Tag { get { return JSONNodeType.String; } }903        public override bool IsString { get { return true; } }904        public override Enumerator GetEnumerator() { return new Enumerator(); }905        public override string Value906        {907            get { return m_Data; }908            set909            {910                m_Data = value;911            }912        }913        public JSONString(string aData)914        {915            m_Data = aData;916        }917        internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode)918        {919            aSB.Append('\"').Append(Escape(m_Data)).Append('\"');920        }921        public override bool Equals(object obj)922        {923            if (base.Equals(obj))924                return true;925            string s = obj as string;926            if (s != null)927                return m_Data == s;928            global::ThirdParty.SimpleJSON.JSONString s2 = obj as global::ThirdParty.SimpleJSON.JSONString;929            if (s2 != null)930                return m_Data == s2.m_Data;931            return false;932        }933        public override int GetHashCode()934        {935            return m_Data.GetHashCode();936        }937    }938    // End of JSONString939    public partial class JSONNumber : global::ThirdParty.SimpleJSON.JSONNode940    {941        double m_Data;942        public override JSONNodeType Tag { get { return JSONNodeType.Number; } }943        public override bool IsNumber { get { return true; } }944        public override Enumerator GetEnumerator() { return new Enumerator(); }945        public override string Value946        {947            get { return m_Data.ToString(CultureInfo.InvariantCulture); }948            set949            {950                double v;951                if (double.TryParse(value, NumberStyles.Float, CultureInfo.InvariantCulture, out v))952                    m_Data = v;953            }954        }955        public override double AsDouble956        {957            get { return m_Data; }958            set { m_Data = value; }959        }960        public override long AsLong961        {962            get { return (long)m_Data; }963            set { m_Data = value; }964        }965        public JSONNumber(double aData)966        {967            m_Data = aData;968        }969        public JSONNumber(string aData)970        {971            Value = aData;972        }973        internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode)974        {975            aSB.Append(Value);976        }977        static bool IsNumeric(object value)978        {979            return value is int || value is uint980                || value is float || value is double981                || value is decimal982                || value is long || value is ulong983                || value is short || value is ushort984                || value is sbyte || value is byte;985        }986        public override bool Equals(object obj)987        {988            if (obj == null)989                return false;990            if (base.Equals(obj))991                return true;992            global::ThirdParty.SimpleJSON.JSONNumber s2 = obj as global::ThirdParty.SimpleJSON.JSONNumber;993            if (s2 != null)994                return m_Data == s2.m_Data;995            if (IsNumeric(obj))996                return Convert.ToDouble(obj) == m_Data;997            return false;998        }999        public override int GetHashCode()1000        {1001            return m_Data.GetHashCode();1002        }1003    }1004    // End of JSONNumber1005    public partial class JSONBool : global::ThirdParty.SimpleJSON.JSONNode1006    {1007        bool m_Data;1008        public override JSONNodeType Tag { get { return JSONNodeType.Boolean; } }1009        public override bool IsBoolean { get { return true; } }1010        public override Enumerator GetEnumerator() { return new Enumerator(); }1011        public override string Value1012        {1013            get { return m_Data.ToString(); }1014            set1015            {1016                bool v;1017                if (bool.TryParse(value, out v))1018                    m_Data = v;1019            }1020        }1021        public override bool AsBool1022        {1023            get { return m_Data; }1024            set { m_Data = value; }1025        }1026        public JSONBool(bool aData)1027        {1028            m_Data = aData;1029        }1030        public JSONBool(string aData)1031        {1032            Value = aData;1033        }1034        internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode)1035        {1036            aSB.Append((m_Data) ? "true" : "false");1037        }1038        public override bool Equals(object obj)1039        {1040            if (obj == null)1041                return false;1042            if (obj is bool)1043                return m_Data == (bool)obj;1044            return false;1045        }1046        public override int GetHashCode()1047        {1048            return m_Data.GetHashCode();1049        }1050    }1051    // End of JSONBool1052    public partial class JSONNull : global::ThirdParty.SimpleJSON.JSONNode1053    {1054        static global::ThirdParty.SimpleJSON.JSONNull m_StaticInstance = new global::ThirdParty.SimpleJSON.JSONNull();1055        public static bool reuseSameInstance = true;1056        public static global::ThirdParty.SimpleJSON.JSONNull CreateOrGet()1057        {1058            if (reuseSameInstance)1059                return m_StaticInstance;1060            return new global::ThirdParty.SimpleJSON.JSONNull();1061        }1062        JSONNull() { }1063        public override JSONNodeType Tag { get { return JSONNodeType.NullValue; } }1064        public override bool IsNull { get { return true; } }1065        public override Enumerator GetEnumerator() { return new Enumerator(); }1066        public override string Value1067        {1068            get { return "null"; }1069            set { }1070        }1071        public override bool AsBool1072        {1073            get { return false; }1074            set { }1075        }1076        public override bool Equals(object obj)1077        {1078            if (object.ReferenceEquals(this, obj))1079                return true;1080            return (obj is global::ThirdParty.SimpleJSON.JSONNull);1081        }1082        public override int GetHashCode()1083        {1084            return 0;1085        }1086        internal override void WriteToStringBuilder(StringBuilder aSB, int aIndent, int aIndentInc, JSONTextMode aMode)1087        {1088            aSB.Append("null");1089        }1090    }1091    // End of JSONNull1092    internal partial class JSONLazyCreator : global::ThirdParty.SimpleJSON.JSONNode1093    {1094        global::ThirdParty.SimpleJSON.JSONNode m_Node = null;1095        string m_Key = null;1096        public override JSONNodeType Tag { get { return JSONNodeType.None; } }1097        public override Enumerator GetEnumerator() { return new Enumerator(); }1098        public JSONLazyCreator(global::ThirdParty.SimpleJSON.JSONNode aNode)1099        {1100            m_Node = aNode;1101            m_Key = null;1102        }1103        public JSONLazyCreator(global::ThirdParty.SimpleJSON.JSONNode aNode, string aKey)1104        {1105            m_Node = aNode;1106            m_Key = aKey;1107        }1108        void Set(global::ThirdParty.SimpleJSON.JSONNode aVal)1109        {1110            if (m_Key == null)1111            {1112                m_Node.Add(aVal);1113            }1114            else1115            {1116                m_Node.Add(m_Key, aVal);1117            }1118            m_Node = null; // Be GC friendly.1119        }1120        public override global::ThirdParty.SimpleJSON.JSONNode this[int aIndex]1121        {1122            get1123            {1124                return new global::ThirdParty.SimpleJSON.JSONLazyCreator(this);1125            }1126            set1127            {1128                global::ThirdParty.SimpleJSON.JSONArray tmp = new global::ThirdParty.SimpleJSON.JSONArray();1129                tmp.Add(value);1130                Set(tmp);1131            }1132        }1133        public override global::ThirdParty.SimpleJSON.JSONNode this[string aKey]1134        {1135            get1136            {1137                return new global::ThirdParty.SimpleJSON.JSONLazyCreator(this, aKey);1138            }1139            set1140            {1141                global::ThirdParty.SimpleJSON.JSONObject tmp = new global::ThirdParty.SimpleJSON.JSONObject();1142                tmp.Add(aKey, value);1143                Set(tmp);1144            }1145        }1146        public override void Add(global::ThirdParty.SimpleJSON.JSONNode aItem)1147        {1148            global::ThirdParty.SimpleJSON.JSONArray tmp = new global::ThirdParty.SimpleJSON.JSONArray();1149            tmp.Add(aItem);1150            Set(tmp);1151        }1152        public override void Add(string aKey, global::ThirdParty.SimpleJSON.JSONNode aItem)1153        {1154            global::ThirdParty.SimpleJSON.JSONObject tmp = new global::ThirdParty.SimpleJSON.JSONObject();1155            tmp.Add(aKey, aItem);1156            Set(tmp);1157        }1158        public static bool operator ==(global::ThirdParty.SimpleJSON.JSONLazyCreator a, object b)1159        {1160            if (b == null)1161                return true;1162            return System.Object.ReferenceEquals(a, b);1163        }1164        public static bool operator !=(global::ThirdParty.SimpleJSON.JSONLazyCreator a, object b)1165        {1166            return !(a == b);1167        }1168        public override bool Equals(object obj)1169        {1170            if (obj == null)1171                return true;1172            return System.Object.ReferenceEquals(this, obj);1173        }1174        public override int GetHashCode()1175        {1176            return 0;1177        }1178        public override int AsInt1179        {1180            get1181            {1182                global::ThirdParty.SimpleJSON.JSONNumber tmp = new global::ThirdParty.SimpleJSON.JSONNumber(0);1183                Set(tmp);1184                return 0;1185            }1186            set1187            {1188                global::ThirdParty.SimpleJSON.JSONNumber tmp = new global::ThirdParty.SimpleJSON.JSONNumber(value);1189                Set(tmp);1190            }1191        }1192        public override float AsFloat1193        {1194            get1195            {1196                global::ThirdParty.SimpleJSON.JSONNumber tmp = new global::ThirdParty.SimpleJSON.JSONNumber(0.0f);1197                Set(tmp);1198                return 0.0f;1199            }1200            set1201            {1202                global::ThirdParty.SimpleJSON.JSONNumber tmp = new global::ThirdParty.SimpleJSON.JSONNumber(value);1203                Set(tmp);1204            }1205        }1206        public override double AsDouble1207        {1208            get1209            {1210                global::ThirdParty.SimpleJSON.JSONNumber tmp = new global::ThirdParty.SimpleJSON.JSONNumber(0.0);1211                Set(tmp);1212                return 0.0;1213            }1214            set1215            {1216                global::ThirdParty.SimpleJSON.JSONNumber tmp = new global::ThirdParty.SimpleJSON.JSONNumber(value);1217                Set(tmp);1218            }1219        }1220        public override long AsLong1221        {1222            get1223            {1224                if (longAsString)1225                    Set(new global::ThirdParty.SimpleJSON.JSONString("0"));1226                else1227                    Set(new global::ThirdParty.SimpleJSON.JSONNumber(0.0));1228                return 0L;1229            }1230            set1231            {1232                if (longAsString)1233                    Set(new global::ThirdParty.SimpleJSON.JSONString(value.ToString()));1234                else1235                    Set(new global::ThirdParty.SimpleJSON.JSONNumber(value));1236            }1237        }1238        public override bool AsBool1239        {1240            get1241            {1242                global::ThirdParty.SimpleJSON.JSONBool tmp = new global::ThirdParty.SimpleJSON.JSONBool(false);1243                Set(tmp);1244                return false;1245            }1246            set1247            {1248                global::ThirdParty.SimpleJSON.JSONBool tmp = new global::ThirdParty.SimpleJSON.JSONBool(value);1249                Set(tmp);...JSONNode.cs
Source:JSONNode.cs  
...183    public static implicit operator JSONNode(string s) => (JSONNode) new JSONString(s);184185    public static implicit operator string(JSONNode d) => d == (object) null ? (string) null : d.Value;186187    public static implicit operator JSONNode(double n) => (JSONNode) new JSONNumber(n);188189    public static implicit operator double(JSONNode d) => d == (object) null ? 0.0 : d.AsDouble;190191    public static implicit operator JSONNode(float n) => (JSONNode) new JSONNumber((double) n);192193    public static implicit operator float(JSONNode d) => d == (object) null ? 0.0f : d.AsFloat;194195    public static implicit operator JSONNode(int n) => (JSONNode) new JSONNumber((double) n);196197    public static implicit operator int(JSONNode d) => d == (object) null ? 0 : d.AsInt;198199    public static implicit operator JSONNode(long n) => JSONNode.longAsString ? (JSONNode) new JSONString(n.ToString()) : (JSONNode) new JSONNumber((double) n);200201    public static implicit operator long(JSONNode d) => d == (object) null ? 0L : d.AsLong;202203    public static implicit operator JSONNode(bool b) => (JSONNode) new JSONBool(b);204205    public static implicit operator bool(JSONNode d) => !(d == (object) null) && d.AsBool;206207    public static implicit operator JSONNode(KeyValuePair<string, JSONNode> aKeyValue) => aKeyValue.Value;208209    public static bool operator ==(JSONNode a, object b)210    {211      if ((object) a == b)212        return true;213      bool flag1 = a is JSONNull || (object) a == null || a is JSONLazyCreator;
...JSONNumber
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using SimpleJSON;7{8    {9        static void Main(string[] args)10        {11            string json = @"{12                ""object"": {13                }14            }";15            var node = JSON.Parse(json);16            var enumerator = node.GetEnumerator();17            while (enumerator.MoveNext())18            {19                if (enumerator.Current.Value.IsNumber)20                {21                    Console.WriteLine("Number: {0}", enumerator.Current.Value.JSONNumber);22                }23            }24            Console.ReadLine();25        }26    }27}28using System;29using System.Collections.Generic;30using System.Linq;31using System.Text;32using System.Threading.Tasks;33using SimpleJSON;34{35    {36        static void Main(string[] args)37        {38            string json = @"{39                ""object"": {40                }41            }";42            var node = JSON.Parse(json);43            var enumerator = node.GetEnumerator();44            while (enumerator.MoveNext())45            {46                if (enumerator.Current.Value.IsNumber)47                {48                    Console.WriteLine("Number: {0}", enumerator.Current.Value.JSONNumber);JSONNumber
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using SimpleJSON;7{8    {9        static void Main(string[] args)10        {11            string json = "{\"key1\": \"value1\", \"key2\": 2, \"key3\": 3.0, \"key4\": true, \"key5\": [1, 2, 3, 4]}";12            JSONNode jNode = JSON.Parse(json);13            JSONNode jNode1 = jNode["key2"];14            JSONNode jNode2 = jNode["key3"];15            JSONNode jNode3 = jNode["key4"];16            JSONNode jNode4 = jNode["key5"];17            JSONNode jNode5 = jNode["key6"];18            Console.WriteLine("jNode1: " + jNode1);19            Console.WriteLine("jNode2: " + jNode2);20            Console.WriteLine("jNode3: " + jNode3);21            Console.WriteLine("jNode4: " + jNode4);22            Console.WriteLine("jNode5: " + jNode5);23            Console.WriteLine("jNode1 JSONNumber: " + jNode1.JSONNumber);24            Console.WriteLine("jNode2 JSONNumber: " + jNode2.JSONNumber);25            Console.WriteLine("jNode3 JSONNumber: " + jNode3.JSONNumber);26            Console.WriteLine("jNode4 JSONNumber: " + jNode4.JSONNumber);27            Console.WriteLine("jNode5 JSONNumber: " + jNode5.JSONNumber);28            Console.ReadKey();29        }30    }31}JSONNumber
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using SimpleJSON;7{8    {9        static void Main(string[] args)10        {11            string json = "{ \"number\": 123 }";12            var obj = JSON.Parse(json);13            var enumerator = obj.GetEnumerator();14            enumerator.MoveNext();15            Console.WriteLine(enumerator.Current.Value.JSONNumber);16            Console.Read();17        }18    }19}JSONNumber
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using SimpleJSON;7{8    {9        static void Main(string[] args)10        {11            string json = @"{""Name"":""John Smith"",""Age"":30,""Address"":{""Street"":""21 2nd Street"",""City"":""New York"",""State"":""NY"",""PostalCode"":10021}}";12            var data = JSON.Parse(json);13            var name = data["Name"];14            Console.WriteLine(name);15            Console.ReadLine();16        }17    }18}JSONNumber
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using SimpleJSON;7{8    {9        static void Main(string[] args)10        {11            string jsonString = "{ \"num\": 3.14 }";12            JSONNode json = JSON.Parse(jsonString);13            JSONClass jsonObject = (JSONClass)json;14            Console.WriteLine(jsonObject["num"].AsDouble);15            Console.ReadLine();16        }17    }18}JSONNumber
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using SimpleJSON;7{8    {9        static void Main(string[] args)10        {11            string json = @"{12                  { ""name"": ""Ford"", ""models"": [""Fiesta"", ""Focus"", ""Mustang""] },13                  { ""name"": ""BMW"", ""models"": [""320"", ""X3"", ""X5""] },14                  { ""name"": ""Fiat"", ""models"": [""500"", ""Panda""] }15            }";16            var N = JSON.Parse(json);17            Console.WriteLine("Name: " + N["name"]);18            Console.WriteLine("Age: " + N["age"]);19            Console.WriteLine("First car: " + N["cars"][0]["name"]);20            Console.WriteLine("All cars:");21            foreach (var car in N["cars"].Children)22                Console.WriteLine(car["name"]);23        }24    }25}JSONNumber
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using SimpleJSON;7{8    {9        static void Main(string[] args)10        {11            string json = "{'number': 10}";12            var node = JSON.Parse(json);13            var enumerator = node.GetEnumerator();14            while (enumerator.MoveNext())15            {16                Console.WriteLine(enumerator.Current.Key);17                Console.WriteLine(enumerator.Current.Value);18            }19            Console.ReadLine();20        }21    }22}23using System;24using System.Collections.Generic;25using System.Linq;26using System.Text;27using System.Threading.Tasks;28using SimpleJSON;29{30    {31        static void Main(string[] args)32        {33            string json = "{'bool': true}";34            var node = JSON.Parse(json);35            var enumerator = node.GetEnumerator();36            while (enumerator.MoveNext())37            {38                Console.WriteLine(enumerator.Current.Key);39                Console.WriteLine(enumerator.Current.Value);40            }41            Console.ReadLine();42        }43    }44}45using System;46using System.Collections.Generic;47using System.Linq;48using System.Text;49using System.Threading.Tasks;50using SimpleJSON;51{52    {53        static void Main(string[] args)54        {55            string json = "{'null': null}";56            var node = JSON.Parse(json);57            var enumerator = node.GetEnumerator();58            while (enumerator.MoveNext())59            {60                Console.WriteLine(enumerator.Current.Key);61                Console.WriteLine(enumerator.Current.Value);62            }63            Console.ReadLine();64        }65    }66}67using System;68using System.Collections.Generic;69using System.Linq;70using System.Text;71using System.Threading.Tasks;72using SimpleJSON;73{74    {75        static void Main(string[] args)76        {77            string json = "{'string': 'hello'}";78            var node = JSON.Parse(json);79            var enumerator = node.GetEnumerator();80            while (enumerator.MoveNext())81            {82                Console.WriteLine(enumerator.Current.Key);83                Console.WriteLine(enumerator.Current.Value);84            }JSONNumber
Using AI Code Generation
1using System;2using SimpleJSON;3{4    {5        static void Main(string[] args)6        {7            string json = @"{""array"":[1,2,3,4,5]}";8            var node = JSON.Parse(json);9            var array = node["array"].AsArray;10            foreach (var item in array)11            {12                Console.WriteLine(item.JSONNumber);13            }14        }15    }16}Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
