Example #1
0
        public List<Value> GetValueFromPropertyName(Utf8String str, Object obj)
        {
            var values = new List<Value>();

            if (obj == null || obj.Members == null) return values;

            foreach (var member in obj.Members)
            {
                if (member == null || member.Pairs == null) return values;

                foreach (var pair in member.Pairs)
                {
                    if (pair == null || pair.Value == null) return values;

                    if (pair.Value.Type == Value.ValueType.Object)
                    {
                        values.AddRange(GetValueFromPropertyName(str, pair.Value.ObjectValue));
                    }

                    if (pair.Value.Type == Value.ValueType.Array)
                    {
                        if (pair.Value.ArrayValue == null || pair.Value.ArrayValue.Elements == null) return values;

                        foreach (var element in pair.Value.ArrayValue.Elements)
                        {
                            if (element == null || element.Values == null) return values;

                            foreach (var value in element.Values)
                            {
                                if (value != null && value.Type == Value.ValueType.Object)
                                {
                                    values.AddRange(GetValueFromPropertyName(str, value.ObjectValue));
                                }
                            }
                        }
                    }

                    if (new Utf8String(pair.Name) == str)
                    {
                        values.Add(pair.Value);
                    }
                }
            }
            return values;
        }
Example #2
0
        private static Json CreateJson()
        {
            var valueAge = new Value
            {
                Type = Value.ValueType.Number,
                NumberValue = 30
            };

            var pairAge = new Pair
            {
                Name = "age",
                Value = valueAge
            };

            var valueFirst = new Value
            {
                Type = Value.ValueType.String,
                StringValue = "John"
            };

            var pairFirst = new Pair
            {
                Name = "first",
                Value = valueFirst
            };

            var valueLast = new Value
            {
                Type = Value.ValueType.String,
                StringValue = "Smith"
            };

            var pairLast = new Pair
            {
                Name = "last",
                Value = valueLast
            };

            var value1 = new Value
            {
                Type = Value.ValueType.String,
                StringValue = "425-000-1212"
            };

            var value2 = new Value
            {
                Type = Value.ValueType.String,
                StringValue = "425-000-1213"
            };

            var values = new List<Value> {value1, value2};
            var elementInner = new Elements {Values = values};
            var elementsInner = new List<Elements> {elementInner};
            var arrInner = new Array {Elements = elementsInner};

            var valuePhone = new Value
            {
                Type = Value.ValueType.Array,
                ArrayValue = arrInner
            };

            var pairPhone = new Pair
            {
                Name = "phoneNumbers",
                Value = valuePhone
            };

            var valueStreet = new Value
            {
                Type = Value.ValueType.String,
                StringValue = "1 Microsoft Way"
            };

            var pairStreet = new Pair
            {
                Name = "street",
                Value = valueStreet
            };

            var valueCity = new Value
            {
                Type = Value.ValueType.String,
                StringValue = "Redmond"
            };

            var pairCity = new Pair
            {
                Name = "city",
                Value = valueCity
            };

            var valueZip = new Value
            {
                Type = Value.ValueType.Number,
                NumberValue = 98052
            };

            var pairZip = new Pair
            {
                Name = "zip",
                Value = valueZip
            };

            var pairsInner = new List<Pair> {pairStreet, pairCity, pairZip};
            var memberInner = new Members {Pairs = pairsInner};
            var membersInner = new List<Members> {memberInner};
            var objInner = new Object {Members = membersInner};

            var valueAddress = new Value
            {
                Type = Value.ValueType.Object,
                ObjectValue = objInner
            };

            var pairAddress = new Pair
            {
                Name = "address",
                Value = valueAddress
            };

            var pairs = new List<Pair> {pairAge, pairFirst, pairLast, pairPhone, pairAddress};
            var member = new Members {Pairs = pairs};
            var members = new List<Members> {member};
            var obj = new Object {Members = members};
            var json = new Json {Object = obj};

            return json;
        }
Example #3
0
        private static Object ReadObject(ref JsonReader jsonReader)
        {
            var jsonObject = new Object();
            var jsonMembersList = new List<Members>();
            List<Pair> jsonPairs = null;

            while (jsonReader.Read())
            {
                switch (jsonReader.TokenType)
                {
                    case JsonReader.JsonTokenType.ObjectStart:
                        jsonPairs = new List<Pair>();
                        break;
                    case JsonReader.JsonTokenType.ObjectEnd:
                        if (jsonPairs != null)
                        {
                            var jsonMembers = new Members {Pairs = jsonPairs};
                            jsonMembersList.Add(jsonMembers);
                            jsonObject.Members = jsonMembersList;
                            return jsonObject;
                        }
                        break;
                    case JsonReader.JsonTokenType.ArrayStart:
                        break;
                    case JsonReader.JsonTokenType.ArrayEnd:
                        break;
                    case JsonReader.JsonTokenType.Property:
                        var pair = new Pair
                        {
                            Name = (string) jsonReader.GetName(),
                            Value = GetValue(ref jsonReader)
                        };
                        if (jsonPairs != null) jsonPairs.Add(pair);
                        break;
                    case JsonReader.JsonTokenType.Value:
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
            }
            throw new FormatException("Json object was started but never ended.");
        }
Example #4
0
        private static Json ReadJson(string jsonString)
        {
            var json = new Json();
            if (string.IsNullOrEmpty(jsonString))
            {
                return json;
            }

            var jsonReader = new JsonReader(jsonString);
            var jsonObjectMain = new Object();
            var jsonMembersMain = new List<Members>();

            ReadJsonHelper(jsonReader, jsonMembersMain);

            jsonObjectMain.Members = jsonMembersMain;
            json.Object = jsonObjectMain;

            return json;
        }
Example #5
0
 public List<Value> GetValueFromPropertyName(string str, Object obj)
 {
     return GetValueFromPropertyName(new Utf8String(str), obj);
 }
Example #6
0
        private string OutputObject(Object obj)
        {
            var str = "";

            if (obj == null || obj.Members == null) return str;

            foreach (var member in obj.Members)
            {
                str += "{";
                str += OutputMembers(member);
                str += "}";
            }

            return str;
        }
Example #7
0
        private string OutputObject(Object obj)
        {
            var strBuilder = new StringBuilder();

            if (obj == null || obj.Pairs == null) return "";

            strBuilder.Append("{");
            for (var i = 0; i < obj.Pairs.Count; i++)
            {
                strBuilder.Append(OutputPair(obj.Pairs[i]));
                if (i < obj.Pairs.Count - 1)
                {
                    strBuilder.Append(",");
                }
            }
            strBuilder.Append("}");

            return strBuilder.ToString();
        }
Example #8
0
        private static void ReadJsonHelper(JsonReader jsonReader, List<Value> jsonElementsMain)
        {
            Object jsonObject = null;
            List<Pair> jsonPairs = null;
            List<Value> jsonValues = null;

            while (jsonReader.Read())
            {
                switch (jsonReader.TokenType)
                {
                    case JsonReader.JsonTokenType.ObjectStart:
                        jsonObject = new Object();
                        jsonPairs = new List<Pair>();
                        break;
                    case JsonReader.JsonTokenType.ObjectEnd:
                        if (jsonObject != null)
                        {
                            jsonObject.Pairs = jsonPairs;
                        }
                        break;
                    case JsonReader.JsonTokenType.ArrayStart:
                        jsonValues = new List<Value>();
                        break;
                    case JsonReader.JsonTokenType.ArrayEnd:
                        if (jsonValues != null)
                        {
                            jsonElementsMain.AddRange(jsonValues);
                        }
                        break;
                    case JsonReader.JsonTokenType.Property:
                        var pair = new Pair
                        {
                            Name = (string)jsonReader.GetName(),
                            Value = GetValue(ref jsonReader)
                        };
                        if (jsonPairs != null) jsonPairs.Add(pair);
                        break;
                    case JsonReader.JsonTokenType.Value:
                        if (jsonValues != null) jsonValues.Add(GetValue(ref jsonReader));
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
            }
        }
Example #9
0
        private static Json ReadJson(string jsonString)
        {
            var json = new Json();
            if (string.IsNullOrEmpty(jsonString))
            {
                return json;
            }

            var jsonReader = new JsonReader(jsonString);
            var jsonObjectMain = new Object();
            var jsonMembersMain = new List<Pair>();
            var jsonArrayMain = new Array();
            var jsonElementsMain = new List<Value>();

            if (jsonString.Trim().Substring(0, 1) == "[")
            {
                ReadJsonHelper(jsonReader, jsonElementsMain);

                jsonArrayMain.Values = jsonElementsMain;
                json.Array = jsonArrayMain;
            }
            else
            {
                ReadJsonHelper(jsonReader, jsonMembersMain);

                jsonObjectMain.Pairs = jsonMembersMain;
                json.Object = jsonObjectMain;
            }

            return json;
        }