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; }
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; }
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."); }
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; }
public List<Value> GetValueFromPropertyName(string str, Object obj) { return GetValueFromPropertyName(new Utf8String(str), obj); }
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; }
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(); }
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(); } } }
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; }