public static IJsonValue Wrap(object value) { if (value is JValue) { value = ((JValue)value).Value; } FieldDataType dataType = JSONType.GetJSONType(value); IJsonValue jsonValue = null; switch (dataType) { case FieldDataType.Array: var values = new List <IJsonValue>(); if (value is System.Collections.ArrayList) { var array = (System.Collections.ArrayList)value; foreach (var obj in array) { values.Add(Wrap(obj)); } } else { var array = (Array)value; foreach (var obj in array) { values.Add(Wrap(obj)); } } jsonValue = new ArrayJsonValue(values.ToArray()); break; case FieldDataType.Bool: jsonValue = new BooleanJsonValue((bool)value); break; case FieldDataType.DateTime: jsonValue = new DateTimeJsonValue((DateTime)value); break; case FieldDataType.Null: jsonValue = new NullValue(); break; case FieldDataType.Number: jsonValue = new NumberJsonValue(value); break; case FieldDataType.Object: if (value.GetType() == typeof(JArray)) { var arr = (JArray)value; var vals = new List <IJsonValue>(); foreach (var obj in arr) { vals.Add(Wrap(obj)); } jsonValue = new ArrayJsonValue(vals.ToArray()); } else if (value.GetType() == typeof(IJsonValue[])) { var arr = (IJsonValue[])value; //var vals = new List<IJsonValue>(); //foreach (var obj in arr) //{ // vals.Add(Wrap(obj)); //} jsonValue = new ArrayJsonValue(arr); //vals.ToArray()); } else { jsonValue = new ObjectJsonValue(Serialize(value)); } break; case FieldDataType.String: jsonValue = new StringJsonValue((string)value); break; } return(jsonValue); }
public bool Evaluate(out IJsonValue value, IJSONDocument document) { value = new NumberJsonValue((double)Constant); return(true); }