public ObtenerResolucionesCompletas_Result(IJsonValue jsonValue)
        {
            /*JsonObject jsonObject = jsonValue.GetObject();
             *
             * Resolucion = jsonObject.GetNamedString("Valor");
             * Nombre = jsonObject.GetNamedString("Valor");*/

            Resolucion = jsonValue.GetString();
            Nombre     = jsonValue.GetString();
        }
        public static object[] ToObjectArray(this IJsonValue v)
        {
            List <object> result = new List <object>();

            switch (v.ValueType)
            {
            case JsonValueType.Boolean:
                result.Add(v.GetBoolean());
                break;

            case JsonValueType.Null:
                result.Add(null);
                break;

            case JsonValueType.Number:
                result.Add(v.GetNumber());
                break;

            case JsonValueType.String:
                result.Add(v.GetString());
                break;

            case JsonValueType.Array:
                result.Add(v.GetArray().ToObjectArray());
                break;
            }

            return(result.ToArray());
        }
예제 #3
0
        public ClipEvent(string jsonString)
        {
            JsonObject jsonObject = JsonObject.Parse(jsonString);

            IJsonValue timestampJsonValue = jsonObject.GetNamedValue(timestampKey);

            Timestamp = DateTime.Parse(timestampJsonValue.GetString());

            IJsonValue cityJsonValue = jsonObject.GetNamedValue(cityKey);

            City = cityJsonValue.GetString();

            IJsonValue estLatKeyJsonValue = jsonObject.GetNamedValue(est_latKey);
            var        latitude           = double.Parse(estLatKeyJsonValue.GetString());
            IJsonValue estLonKeyJsonValue = jsonObject.GetNamedValue(est_lonKey);
            var        longitude          = double.Parse(estLonKeyJsonValue.GetString());

            Geoposition = new BasicGeoposition {
                Latitude = latitude, Longitude = longitude
            };


            IJsonValue reasonKeyJsonValue = jsonObject.GetNamedValue(reasonKey);
            var        reason             = reasonKeyJsonValue.GetString();

            Reason = reason;
        }
예제 #4
0
        internal void SetValue(object item, IJsonValue value)
        {
            // clunky and basic primitive conversion...
            object toSet = null;

            if (value.ValueType == JsonValueType.String)
            {
                toSet = value.GetString();
            }
            else if (value.ValueType == JsonValueType.Number)
            {
                toSet = value.GetNumber();
            }
            else if (value.ValueType == JsonValueType.Boolean)
            {
                toSet = value.GetBoolean();
            }
            else
            {
                throw new NotSupportedException(string.Format("Cannot handle '{0}'.", value.ValueType));
            }

            // convert to the target type and set...
            toSet = Convert.ChangeType(toSet, this.Property.PropertyType);
            this.Property.SetValue(item, toSet);
        }
예제 #5
0
        public Restaurant(JsonObject json)
        {
            this.Pk          = (int)json.GetNamedNumber("pk");
            this.Name        = json.GetNamedString("name");
            this.Description = json.GetNamedString("description");
            if (json.ContainsKey("thumbnail"))
            {
                this.ThumbnailUrl = json.GetNamedString("thumbnail");
            }
            this.Style                = json.GetNamedString("style");
            this.Address              = json.GetNamedString("address");
            this.Latitude             = json.GetNamedNumber("geo_lat");
            this.Longitude            = json.GetNamedNumber("geo_lon");
            this.PublicTransit        = json.GetNamedString("public_transit");
            this.PhoneNumber1         = json.GetNamedString("phone_number_1");
            this.PhoneNumber2         = json.GetNamedString("phone_number_2");
            this.OpeningHours         = json.GetNamedString("opening_hours");
            this.Website              = json.GetNamedString("website");
            this.IsClosed             = json.GetNamedBoolean("is_closed");
            this.IsLocked             = json.GetNamedBoolean("is_locked");
            this.UrlPath              = json.GetNamedString("url_path");
            this.RatingNumbers        = (int)json.GetNamedNumber("rating_num");
            this.RatingScore          = json.GetNamedNumber("rating_score");
            this.ConsumptionNumbers   = (int)json.GetNamedNumber("consumption_num");
            this.ConsumptionPerCapita = json.GetNamedNumber("consumption_per_capita").ToString() + "€";
            this.IsAdRanking          = json.GetNamedBoolean("is_ad_ranking");

            int size = json.GetNamedArray("tag_list").Count();

            for (int i = 0; i < size; i++)
            {
                IJsonValue element = json.GetNamedArray("tag_list")[i];
                this.Tags += " " + element.GetString();
            }
        }
예제 #6
0
 public static bool TryGetFloat(this IJsonValue data, out float retVal)
 {
     if (data == null)
     {
         retVal = default(float);
         return(false);
     }
     if (data.ValueType == JsonValueType.String)
     {
         if (!float.TryParse(data.GetString(), out retVal))
         {
             retVal = default(float);
             return(false);
         }
         return(true);
     }
     else if (data.ValueType == JsonValueType.Number)
     {
         retVal = (float)data.GetNumber();
         return(true);
     }
     else
     {
         retVal = default(float);
         return(false);
     }
 }
예제 #7
0
 public static bool TryGetDouble(this IJsonValue data, out double retVal)
 {
     if (data == null)
     {
         retVal = default(double);
         return(false);
     }
     if (data.ValueType == JsonValueType.String)
     {
         if (!double.TryParse(data.GetString(), out retVal))
         {
             retVal = default(double);
             return(false);
         }
         return(true);
     }
     else if (data.ValueType == JsonValueType.Number)
     {
         retVal = data.GetNumber();
         return(true);
     }
     else
     {
         retVal = default(double);
         return(false);
     }
 }
예제 #8
0
 public static bool TryGetInt(this IJsonValue data, out int retVal)
 {
     if (data == null)
     {
         retVal = default(int);
         return(false);
     }
     if (data.ValueType == JsonValueType.String)
     {
         if (!int.TryParse(data.GetString(), out retVal))
         {
             retVal = default(int);
             return(false);
         }
         return(true);
     }
     else if (data.ValueType == JsonValueType.Number)
     {
         retVal = (int)Math.Round(data.GetNumber());
         return(true);
     }
     else
     {
         retVal = default(int);
         return(false);
     }
 }
예제 #9
0
        public User(string jsonString) : this()
        {
            JsonObject jsonObject = JsonObject.Parse(jsonString);

            Id = jsonObject.GetNamedString(idKey, "");

            IJsonValue phoneJsonValue = jsonObject.GetNamedValue(phoneKey);

            if (phoneJsonValue.ValueType == JsonValueType.Null)
            {
                Phone = null;
            }
            else
            {
                Phone = phoneJsonValue.GetString();
            }

            Name     = jsonObject.GetNamedString(nameKey, "");
            Timezone = jsonObject.GetNamedNumber(timezoneKey, 0);
            Verified = jsonObject.GetNamedBoolean(verifiedKey, false);

            foreach (IJsonValue jsonValue in jsonObject.GetNamedArray(educationKey, new JsonArray()))
            {
                if (jsonValue.ValueType == JsonValueType.Object)
                {
                    Education.Add(new School(jsonValue.GetObject()));
                }
            }
        }
예제 #10
0
        internal static object ValueToObject(IJsonValue value)
        {
            switch (value.ValueType)
            {
            case JsonValueType.Null:
                return(null);

            case JsonValueType.Boolean:
                return(value.GetBoolean());

            case JsonValueType.Number:
                return(value.GetNumber());

            case JsonValueType.String:
                return(value.GetString());

            case JsonValueType.Object:
                return(new JsonPropertyProvider(value.GetObject()));

            case JsonValueType.Array:
                return(new JsonVectorView(value.GetArray()));

            default:
                throw new ArgumentException();
            }
        }
        public object ConvertFromJson(IJsonValue value)
        {
            List<Location> result = null;

            if (value != null && value.ValueType == JsonValueType.String)
            {
                string valueInStr = value.GetString();
                var locationPairs = valueInStr.Split(';');
                if (locationPairs != null)
                {
                    result = new List<Location>();

                    foreach (var locationPair in locationPairs)
                    {
                        if (locationPair.Length > 0)
                        {
                            var latLong = locationPair.Split(',');

                            result.Add(new Location()
                                {
                                    Latitude = Convert.ToDouble(latLong[0]),
                                    Longitude = Convert.ToDouble(latLong[1]),
                                });
                        }
                    }
                }
            }

            return result;
        }
예제 #12
0
        private void Process(out JsonObject jsonObj, IJsonValue jsonData)
        {
            switch (jsonData.ValueType)
            {
            case JsonValueType.Null:
                jsonObj = new JsonObject();
                break;

            case JsonValueType.Boolean:
                jsonObj = new JsonObject(jsonData.GetBoolean());
                break;

            case JsonValueType.Number:
                jsonObj = new JsonObject(jsonData.GetNumber());
                break;

            case JsonValueType.String:
                jsonObj = new JsonObject(jsonData.GetString());
                break;

            case JsonValueType.Array:
                jsonObj = new JsonObject(JsonObjectType.Array);
                ProcessArray(jsonObj, jsonData.GetArray());
                break;

            case JsonValueType.Object:
                jsonObj = new JsonObject(JsonObjectType.Object);
                ProcessObject(jsonObj, jsonData.GetObject());
                break;

            default:
                throw new Exception("意外情况");
            }
        }
        public void StatefulState_Serialize()
        {
            IComponentState state     = new StatefulComponentState("Off");
            IJsonValue      jsonValue = state.ToJsonValue();

            jsonValue.ValueType.ShouldBeEquivalentTo(JsonValueType.String);
            jsonValue.GetString().ShouldBeEquivalentTo("Off");
        }
        public void String_ToJsonValue()
        {
            IJsonValue jsonValue = "Test".ToJsonValue();

            (jsonValue == null).ShouldBeEquivalentTo(false);
            jsonValue.ValueType.ShouldBeEquivalentTo(JsonValueType.String);
            jsonValue.GetString().ShouldBeEquivalentTo("Test");
        }
예제 #15
0
 //扩展方法,用于检测值为null的情况
 public static string TryGetString(this IJsonValue source)
 {
     if (source.ValueType == JsonValueType.Null)
     {
         return("");
     }
     return(source.GetString());
 }
예제 #16
0
 private void WriteJsonValue(JsonWriter writer, IJsonValue value)
 {
     switch (value.ValueType)
     {
         case JsonValueType.Array:
         {
             JsonArray a = value.GetArray();
             writer.WriteStartArray();
             for (int i = 0; i < a.Count; i++)
             {
                 WriteJsonValue(writer, a[i]);
             }
             writer.WriteEndArray();
         }
             break;
         case JsonValueType.Boolean:
         {
             writer.WriteValue(value.GetBoolean());
         }
             break;
         case JsonValueType.Null:
         {
             writer.WriteNull();
         }
             break;
         case JsonValueType.Number:
         {
             // JsonValue doesn't support integers
             // serialize whole numbers without a decimal point
             double d = value.GetNumber();
             bool isInteger = (d % 1 == 0);
             if (isInteger && d <= long.MaxValue && d >= long.MinValue)
                 writer.WriteValue(Convert.ToInt64(d));
             else
                 writer.WriteValue(d);
         }
             break;
         case JsonValueType.Object:
         {
             JsonObject o = value.GetObject();
             writer.WriteStartObject();
             foreach (KeyValuePair<string, IJsonValue> v in o)
             {
                 writer.WritePropertyName(v.Key);
                 WriteJsonValue(writer, v.Value);
             }
             writer.WriteEndObject();
         }
             break;
         case JsonValueType.String:
         {
             writer.WriteValue(value.GetString());
         }
             break;
         default:
             throw new ArgumentOutOfRangeException("ValueType");
     }
 }
예제 #17
0
        private void WriteJsonValue(JsonWriter writer, IJsonValue value)
        {
            switch (value.ValueType)
            {
            case JsonValueType.Array:
            {
                JsonArray a = value.GetArray();
                writer.WriteStartArray();
                for (int i = 0; i < a.Count; i++)
                {
                    WriteJsonValue(writer, a[i]);
                }
                writer.WriteEndArray();
            }
            break;

            case JsonValueType.Boolean:
            {
                writer.WriteValue(value.GetBoolean());
            }
            break;

            case JsonValueType.Null:
            {
                writer.WriteNull();
            }
            break;

            case JsonValueType.Number:
            {
                writer.WriteValue(value.GetNumber());
            }
            break;

            case JsonValueType.Object:
            {
                JsonObject o = value.GetObject();
                writer.WriteStartObject();
                foreach (KeyValuePair <string, IJsonValue> v in o)
                {
                    writer.WritePropertyName(v.Key);
                    WriteJsonValue(writer, v.Value);
                }
                writer.WriteEndObject();
            }
            break;

            case JsonValueType.String:
            {
                writer.WriteValue(value.GetString());
            }
            break;

            default:
                throw new ArgumentOutOfRangeException("ValueType");
            }
        }
예제 #18
0
        public static string GetJsonString(this IJsonValue obj)
        {
            if (obj == null || obj.ValueType == JsonValueType.Null)
            {
                return(string.Empty);
            }

            return(obj.GetString());
        }
예제 #19
0
파일: Utils.cs 프로젝트: githubavi/travapp
        public static string GetStringValue(this IJsonValue jsonvalue)
        {
            if (jsonvalue.ValueType == JsonValueType.Null)
            {
                return(string.Empty);
            }

            return(jsonvalue.GetString());
        }
예제 #20
0
        private static object _jsonDeserialize_convert(IJsonValue json)
        {
            object obj = null;

            switch (json.ValueType)
            {
            case JsonValueType.Array:
                JsonArray jsonArray = json.GetArray();
                object[]  objArray  = new object[jsonArray.Count];
                for (int i1 = 0; i1 < jsonArray.Count; i1++)
                {
                    objArray[i1] = _jsonDeserialize_convert(jsonArray[i1]);
                }
                obj = objArray;
                break;

            case JsonValueType.Boolean:
                obj = json.GetBoolean();
                break;

            case JsonValueType.Null:
                obj = null;
                break;

            case JsonValueType.Number:
                obj = json.GetNumber();
                break;

            case JsonValueType.Object:
                JsonObject jsonObject = json.GetObject();

                Dictionary <string, object> d = new Dictionary <string, object>();

                List <string> keys = new List <string>();
                foreach (var key in jsonObject.Keys)
                {
                    keys.Add(key);
                }

                int i2 = 0;
                foreach (var item in jsonObject.Values)
                {
                    d.Add(keys[i2], _jsonDeserialize_convert(item));
                    i2++;
                }
                obj = d;
                break;

            case JsonValueType.String:
                obj = json.GetString();
                break;
            }
            return(obj);
        }
 public object ConvertFromJson(IJsonValue value)
 {
     if (value == null || value.ValueType == JsonValueType.Null)
     {
         return(null);
     }
     else
     {
         return(Enum.Parse(typeof(TEnum), value.GetString()));
     }
 }
예제 #22
0
 public static string GetOptionalString(this IJsonValue data)
 {
     if (data == null)
     {
         return(null);
     }
     if (data.ValueType == JsonValueType.String)
     {
         return(data.GetString());
     }
     return(data.ToString());
 }
        /// <summary>
        /// Throw an exception for an invalid response to a web request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="response">The response.</param>
        /// <param name="body">The body of the response as JSON.</param>
        private static void ThrowInvalidResponse(IServiceFilterRequest request, IServiceFilterResponse response, IJsonValue body)
        {
            Debug.Assert(request != null, "request cannot be null!");
            Debug.Assert(response != null, "response cannot be null!");
            Debug.Assert(
                response.ResponseStatus != ServiceFilterResponseStatus.Success ||
                response.StatusCode >= 400,
                "response should be failing!");

            // Create either an invalid response or connection failed message
            // (check the status code first because some status codes will
            // set a protocol ErrorStatus).
            string message = null;

            if (response.StatusCode >= 400)
            {
                if (body != null)
                {
                    if (body.ValueType == JsonValueType.String)
                    {
                        // User scripts might return errors with just a plain string message as the
                        // body content, so use it as the exception message
                        message = body.GetString();
                    }
                    else if (body.ValueType == JsonValueType.Object)
                    {
                        // Get the error message, but default to the status description
                        // below if there's no error message present.
                        message = body.Get("error").AsString() ??
                                  body.Get("description").AsString();
                    }
                }

                if (string.IsNullOrWhiteSpace(message))
                {
                    message = string.Format(
                        CultureInfo.InvariantCulture,
                        Resources.MobileServiceClient_ErrorMessage,
                        response.StatusDescription);
                }
            }
            else
            {
                message = string.Format(
                    CultureInfo.InvariantCulture,
                    Resources.MobileServiceClient_ErrorMessage,
                    response.ResponseStatus);
            }

            // Combine the pieces and throw the exception
            throw CreateMobileServiceException(message, request, response);
        }
예제 #24
0
        public static T GetEnum <T>(this IJsonValue data) where T : struct
        {
            string dataString = data.GetString();

            if (Enum.TryParse <T>(dataString, out T retVal))
            {
                return(retVal);
            }
            else
            {
                throw new Exception(string.Format("Unable to parse {0} into enum of type {1}", dataString, typeof(T).ToString()));
            }
        }
예제 #25
0
        private static void PrettyPrintValue(StringBuilder builder, IJsonValue jsonValue, int indent)
        {
            switch (jsonValue.ValueType)
            {
            case JsonValueType.String:
                builder.Append($"\"{jsonValue.GetString()}\"");
                break;

            case JsonValueType.Boolean:
                builder.Append($"{jsonValue.GetBoolean()}");
                break;

            case JsonValueType.Number:
                builder.Append($"{jsonValue.GetNumber()}");
                break;

            case JsonValueType.Null:
                builder.Append($"null");
                break;

            case JsonValueType.Object:
                builder.Append("{\r\n");
                indent++;
                foreach (var item in jsonValue.GetObject())    //doesn't preserve order
                {
                    Tabs(builder, indent);
                    builder.Append($"\"{item.Key}\": ");
                    PrettyPrintValue(builder, (item.Value), indent);
                }
                RemoveLastComma(builder);
                indent--;
                Tabs(builder, indent);
                builder.Append("}");
                break;

            case JsonValueType.Array:
                builder.Append("[\r\n");
                indent++;
                foreach (IJsonValue value in jsonValue.GetArray())
                {
                    Tabs(builder, indent);
                    PrettyPrintValue(builder, value, indent);
                }
                RemoveLastComma(builder);
                indent--;
                Tabs(builder, indent);
                builder.Append("]");
                break;
            }
            builder.Append(",\r\n");
        }
        private static object _jsonDeserialize_convert(IJsonValue json)
        {
            object obj = null;
            switch (json.ValueType)
            {
                case JsonValueType.Array:
                    JsonArray jsonArray = json.GetArray();
                    object[] objArray = new object[jsonArray.Count];
                    for (int i1 = 0; i1 < jsonArray.Count; i1++)
                    {
                        objArray[i1] = _jsonDeserialize_convert(jsonArray[i1]);
                    }
                    obj = objArray;
                    break;
                case JsonValueType.Boolean:
                    obj = json.GetBoolean();
                    break;
                case JsonValueType.Null:
                    obj = null;
                    break;
                case JsonValueType.Number:
                    obj = json.GetNumber();
                    break;
                case JsonValueType.Object:
                    JsonObject jsonObject = json.GetObject();

                    Dictionary<string, object> d = new Dictionary<string, object>();

                    List<string> keys = new List<string>();
                    foreach (var key in jsonObject.Keys)
                    {
                        keys.Add(key);
                    }

                    int i2 = 0;
                    foreach (var item in jsonObject.Values)
                    {
                        d.Add(keys[i2], _jsonDeserialize_convert(item));
                        i2++;
                    }
                    obj = d;
                    break;
                case JsonValueType.String:
                    obj = json.GetString();
                    break;
            }
            return obj;
        }
예제 #27
0
        public Book(string jsonString) : this()
            // TODO
        {
            JsonObject jsonObject = JsonObject.Parse(jsonString);

            author = jsonObject.GetNamedString(authorKey, "");
            title  = jsonObject.GetNamedString(titleKey, "");

            IJsonValue descriptionJsonValue = jsonObject.GetNamedString(descriptionKey);

            if (descriptionJsonValue.ValueType == JsonValueType.Null)
            {
                description = "No descrption, sorry";
            }
            else
            {
                description = descriptionJsonValue.GetString();
            }
        }
예제 #28
0
파일: JsonTools.cs 프로젝트: Ansou1/C-Sharp
        public string JsonGetIdUser(string _loginResponse)
        {
            JsonObject json = new JsonObject();

            if (JsonObject.TryParse(_loginResponse, out json) == true)
            {
                IJsonValue jsonValue = null;
                if (json.TryGetValue("id", out jsonValue) == true)
                {
                    _userID = jsonValue.GetString();
                    System.Diagnostics.Debug.WriteLine(_userID);
                }
                else
                {
                    //throw new MSWException("Error with the json returned from the login request.");
                }
            }
            return(_userID);
        }
예제 #29
0
 public static Color GetColor(this IJsonValue data)
 {
     if (data == null)
     {
         throw new ArgumentNullException("data");
     }
     if (data.ValueType == JsonValueType.String)
     {
         Color retVal;
         if (!VanArsdel.Utils.ColorUtils.TryParseColorString(data.GetString(), out retVal))
         {
             throw new Exception("JsonObject is type string but cannot be parsed to Color");
         }
         return(retVal);
     }
     else
     {
         throw new Exception(string.Format("JsonObject is type {0}", data.ValueType.ToString()));
     }
 }
예제 #30
0
 private static bool ParseAsBoolean(IJsonValue jsonValue, bool defaultValue = false)
 {
     if (jsonValue.ValueType == JsonValueType.Boolean)
     {
         return(jsonValue.GetBoolean());
     }
     else if (jsonValue.ValueType == JsonValueType.String)
     {
         bool rv;
         if (!Boolean.TryParse(jsonValue.GetString(), out rv))
         {
             return(defaultValue);
         }
         return(rv);
     }
     else
     {
         return(defaultValue);
     }
 }
예제 #31
0
 private static int ParseAsInt(IJsonValue jsonValue, int defaultValue = -1)
 {
     if (jsonValue.ValueType == JsonValueType.Number)
     {
         return((int)jsonValue.GetNumber());
     }
     else if (jsonValue.ValueType == JsonValueType.String)
     {
         int rv;
         if (!int.TryParse(jsonValue.GetString(), out rv))
         {
             return(defaultValue);
         }
         return(rv);
     }
     else
     {
         return(defaultValue);
     }
 }
예제 #32
0
        private void RenderValue(IJsonValue json, double indent)
        {
            switch (json.ValueType)
            {
            case JsonValueType.Array:
                RenderArray(json.GetArray(), indent);
                break;

            case JsonValueType.Object:
                RenderObject(json.GetObject(), indent);
                break;

            case JsonValueType.Null:
                AddInlines(new Run()
                {
                    Text = "null", FontStyle = Windows.UI.Text.FontStyle.Italic, Foreground = BooleanBrush
                });
                break;

            case JsonValueType.Number:
                AddInlines(new Run()
                {
                    Text = json.GetNumber().ToString(), Foreground = NumberBrush
                });
                break;

            case JsonValueType.String:
                AddInlines(new Run()
                {
                    Text = "\"" + json.GetString() + "\"", Foreground = StringBrush
                });
                break;

            case JsonValueType.Boolean:
                AddInlines(new Run()
                {
                    Text = json.GetBoolean().ToString(), Foreground = BooleanBrush
                });
                break;
            }
        }
예제 #33
0
        /// <summary>
        /// Invoked when this page is about to be displayed in a Frame.
        /// </summary>
        /// <param name="e">Event data that describes how this page was reached.
        /// This parameter is typically used to configure the page.</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            this.navigationHelper.OnNavigatedTo(e);
            this.loginResponse = e.Parameter as string;

            JsonObject json = new JsonObject();

            if (JsonObject.TryParse(this.loginResponse, out json) == true)
            {
                IJsonValue jsonValue = null;

                if (json.TryGetValue("id", out jsonValue) == true)
                {
                    this.userId = jsonValue.GetString();
                }
                else
                {
                    //throw new MSWException("Error with the json returned from the login request.");
                }
            }
        }
        public object ConvertFromJson(IJsonValue value)
        {
            List<DateTime> result = null;

            if (value != null && value.ValueType == JsonValueType.String)
            {
                string valueInStr = value.GetString();
                var checkIns = valueInStr.Split(';');
                if (checkIns != null)
                {
                    result = new List<DateTime>();

                    foreach (var checkIn in checkIns)
                    {
                        result.Add(Convert.ToDateTime(checkIn));
                    }
                }
            }

            return result;
        }
 private void WriteJsonValue(JsonWriter writer, IJsonValue value)
 {
   switch (value.ValueType)
   {
     case JsonValueType.Array:
       {
         JsonArray a = value.GetArray();
         writer.WriteStartArray();
         for (int i = 0; i < a.Count; i++)
         {
           WriteJsonValue(writer, a[i]);
         }
         writer.WriteEndArray();
       }
       break;
     case JsonValueType.Boolean:
       {
         writer.WriteValue(value.GetBoolean());
       }
       break;
     case JsonValueType.Null:
       {
         writer.WriteNull();
       }
       break;
     case JsonValueType.Number:
       {
         writer.WriteValue(value.GetNumber());
       }
       break;
     case JsonValueType.Object:
       {
         JsonObject o = value.GetObject();
         writer.WriteStartObject();
         foreach (KeyValuePair<string, IJsonValue> v in o)
         {
           writer.WritePropertyName(v.Key);
           WriteJsonValue(writer, v.Value);
         }
         writer.WriteEndObject();
       }
       break;
     case JsonValueType.String:
       {
         writer.WriteValue(value.GetString());
       }
       break;
     default:
       throw new ArgumentOutOfRangeException("ValueType");
   }
 }
예제 #36
0
 dynamic Convert(IJsonValue json)
 {
     dynamic obj = null;
     switch (json.ValueType)
     {
         case JsonValueType.Array:
             obj = ConvertArray(json.GetArray());
             break;
         case JsonValueType.Boolean:
             obj = json.GetBoolean();
             break;
         case JsonValueType.Null:
             obj = null;
             break;
         case JsonValueType.Number:
             obj = json.GetNumber();
             break;
         case JsonValueType.Object:
             obj = new JsonToDynamic(json.GetObject());
             break;
         case JsonValueType.String:
             obj = json.GetString();
             break;
     }
     return obj;
 }
        /// <summary>
        /// Throw an exception for an invalid response to a web request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <param name="response">The response.</param>
        /// <param name="body">The body of the response as JSON.</param>
        private static void ThrowInvalidResponse(IServiceFilterRequest request, IServiceFilterResponse response, IJsonValue body)
        {
            Debug.Assert(request != null, "request cannot be null!");
            Debug.Assert(response != null, "response cannot be null!");
            Debug.Assert(
                response.ResponseStatus != ServiceFilterResponseStatus.Success ||
                    response.StatusCode >= 400,
                "response should be failing!");

            // Create either an invalid response or connection failed message
            // (check the status code first because some status codes will
            // set a protocol ErrorStatus).
            string message = null;
            if (response.StatusCode >= 400)
            {
                if (body != null)
                {
                    if (body.ValueType == JsonValueType.String)
                    {
                        // User scripts might return errors with just a plain string message as the
                        // body content, so use it as the exception message
                        message = body.GetString();
                    }
                    else if (body.ValueType == JsonValueType.Object)
                    {
                        // Get the error message, but default to the status description
                        // below if there's no error message present.
                        message = body.Get("error").AsString() ??
                                  body.Get("description").AsString();
                    }
                }
                
                if (string.IsNullOrWhiteSpace(message))
                {
                    message = string.Format(
                        CultureInfo.InvariantCulture,
                        Resources.MobileServiceClient_ErrorMessage,
                        response.StatusDescription);
                }
            }
            else
            {
                message = string.Format(
                    CultureInfo.InvariantCulture,
                    Resources.MobileServiceClient_ErrorMessage,
                    response.ResponseStatus);
            }

            // Combine the pieces and throw the exception
            throw CreateMobileServiceException(message, request, response);
        }
예제 #38
0
 private static int ParseAsInt(IJsonValue jsonValue, int defaultValue = -1)
 {
     if (jsonValue.ValueType == JsonValueType.Number)
     {
         return (int)jsonValue.GetNumber();
     }
     else if (jsonValue.ValueType == JsonValueType.String)
     {
         int rv;
         if (!int.TryParse(jsonValue.GetString(), out rv))
             return defaultValue;
         return rv;
     }
     else
     {
         return defaultValue;
     }
 }
예제 #39
0
 private void RenderValue(IJsonValue json, double indent)
 {
     switch (json.ValueType)
     {
         case JsonValueType.Array:
             RenderArray(json.GetArray(), indent);
             break;
         case JsonValueType.Object:
             RenderObject(json.GetObject(), indent);
             break;
         case JsonValueType.Null:
             AddInlines(new Run() { Text = "null", FontStyle = Windows.UI.Text.FontStyle.Italic, Foreground = BooleanBrush });
             break;
         case JsonValueType.Number:
             AddInlines(new Run() { Text = json.GetNumber().ToString(), Foreground = NumberBrush });
             break;
         case JsonValueType.String:
             AddInlines(new Run() { Text = "\"" + json.GetString() + "\"", Foreground = StringBrush });
             break;
         case JsonValueType.Boolean:
             AddInlines(new Run() { Text = json.GetBoolean().ToString(), Foreground = BooleanBrush });
             break;
     }
 }
예제 #40
0
 private static bool ParseAsBoolean(IJsonValue jsonValue, bool defaultValue = false)
 {
     if (jsonValue.ValueType == JsonValueType.Boolean)
     {
         return jsonValue.GetBoolean();
     }
     else if (jsonValue.ValueType == JsonValueType.String)
     {
         bool rv;
         if (!Boolean.TryParse(jsonValue.GetString(), out rv))
             return defaultValue;
         return rv;
     }
     else
     {
         return defaultValue;
     }
 }