예제 #1
0
        /// <summary>
        /// Public constructor that accepts any object
        /// </summary>
        /// <param name="objValue">object to be reflected/evaluated for JSON conversion</param>
        public JSONReflector(object objValue)
        {
            Dictionary<JSONStringValue, JSONValue> jsonNameValuePairs = new Dictionary<JSONStringValue, JSONValue>();

            Type type = objValue.GetType();
            PropertyInfo[] properties = type.GetProperties(BindingFlags.Instance | BindingFlags.Public);
            foreach (PropertyInfo pi in properties)
            {
                if (pi.GetIndexParameters().Length == 0)
                {
                    JSONStringValue jsonParameterName = new JSONStringValue(pi.Name);
                    JSONValue jsonParameterValue = this.GetJSONValue(pi.GetValue(objValue, null));

                    if (jsonParameterValue != null)
                    {
                        jsonNameValuePairs.Add(jsonParameterName, jsonParameterValue);
                    }
                }
            }

            FieldInfo[] fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public);
            foreach (FieldInfo fi in fields)
            {
                JSONStringValue jsonParameterName = new JSONStringValue(fi.Name);
                JSONValue jsonParameterValue = this.GetJSONValue(fi.GetValue(objValue));

                if (jsonParameterValue != null)
                {
                    jsonNameValuePairs.Add(jsonParameterName, jsonParameterValue);
                }
            }

            this._jsonObjectCollection = new JSONObjectCollection(jsonNameValuePairs);
        }
예제 #2
0
        private JSONValue GetJSONValue(object objValue)
        {
            if (objValue == null)
            {
                return null;
            }
            Type thisType = objValue.GetType();

            JSONValue jsonValue = null;

            if (thisType == typeof(System.Int32))
            {
                jsonValue = new JSONNumberValue(Convert.ToInt32(objValue));
            }
            else if (thisType == typeof(System.Single))
            {
                jsonValue = new JSONNumberValue(Convert.ToSingle(objValue));
            }
            else if (thisType == typeof(System.Double))
            {
                jsonValue = new JSONNumberValue(Convert.ToDouble(objValue));
            }
            else if (thisType == typeof(System.Decimal))
            {
                jsonValue = new JSONNumberValue(Convert.ToDecimal(objValue));
            }
            else if (thisType == typeof(System.Byte))
            {
                jsonValue = new JSONNumberValue(Convert.ToByte(objValue));
            }
            else if (thisType == typeof(System.String))
            {
                jsonValue = new JSONStringValue(Convert.ToString(objValue));
            }
            else if (thisType == typeof(System.Boolean))
            {
                jsonValue = new JSONBoolValue(Convert.ToBoolean(objValue));
            }
            else if (thisType.BaseType == typeof(System.Enum))
            {
                jsonValue = new JSONStringValue(Enum.GetName(thisType, objValue));
            }
            else if (thisType.IsArray)
            {
                List<JSONValue> jsonValues = new List<JSONValue>();
                Array arrValue = (Array)objValue;
                for (int x = 0; x < arrValue.Length; x++)
                {
                    JSONValue jsValue = this.GetJSONValue(arrValue.GetValue(x));
                    jsonValues.Add(jsValue);
                }
                jsonValue = new JSONArrayCollection(jsonValues);
            }
            else if ( typeof(IDictionary<string, string>).IsAssignableFrom(thisType))
            {
                Dictionary<JSONStringValue, JSONValue> jsonNameValuePairs = new Dictionary<JSONStringValue, JSONValue>();

                foreach (KeyValuePair<string, string> pair in (IDictionary<string, string>)objValue)
                {
                    JSONStringValue jsonParameterName = new JSONStringValue(pair.Key);
                    JSONStringValue jsonParameterValue = new JSONStringValue(pair.Value);
                    if (jsonParameterValue != null)
                    {
                        jsonNameValuePairs.Add(jsonParameterName, jsonParameterValue);
                    }
                }

                jsonValue = new JSONObjectCollection(jsonNameValuePairs);
            }
            else if (thisType.IsSubclassOf(typeof(System.Object)))
            {
                jsonValue = new JSONReflector(objValue);
            }
            return jsonValue;
        }
예제 #3
0
        /// <summary>
        /// Public constructor that accepts any object
        /// </summary>
        /// <param name="objValue">object to be reflected/evaluated for JSON conversion</param>
        public JSONReflector(object objValue)
        {
            Dictionary<JSONStringValue, JSONValue> jsonNameValuePairs = new Dictionary<JSONStringValue, JSONValue>();

            Type type = objValue.GetType();
            PropertyInfo[] properties = type.GetProperties(BindingFlags.Instance | BindingFlags.Public);
            foreach (PropertyInfo pi in properties)
            {
                JSONStringValue jsonParameterName = new JSONStringValue(pi.Name);
                object val = pi.GetValue(objValue, null);
                JSONValue jsonParameterValue = this.GetJSONValue(val);
                if (jsonParameterValue != null)
                {
                    jsonNameValuePairs.Add(jsonParameterName, jsonParameterValue);
                }
            }

            this._jsonObjectCollection = new JSONObjectCollection(jsonNameValuePairs);
        }
예제 #4
0
        /// <summary>
        /// Builds the json from object.
        /// </summary>
        /// <param name="treeNode">The tree node.</param>
        /// <returns></returns>
        private JSONValue BuildJsonFromObject(TreeNode treeNode)
        {
            JSONObjectCollection result = new JSONObjectCollection();

            foreach (TreeNode child in treeNode.Nodes)
            {
                Node node = (Node)child.Tag;
                result.Add(new JSONStringValue(node.Name), BuildJson(child));
            }

            return result;
        }
예제 #5
0
파일: Main.cs 프로젝트: xlfj521/jsonsharp
        /// <summary>
        /// An example implementation of JSONSharp. The location of a purveyor of fine aleas is used 
        /// to show how different data types are handled when converted to JSON format at render time.
        /// </summary>
        /// <param name="args">command-line arguments; none used in this example</param>
        public static void Main(string[] args)
        {
            // Create a Dictionary of name/value pairs for the entire JSON object
            Dictionary<JSONStringValue, JSONValue> jsonNameValuePairs = new Dictionary<JSONStringValue, JSONValue>();

            // Create and add name/value pairs for business, address, city, state,
            // zipcode, latitude, longitude, covercharge and url
            JSONStringValue jsv_name_Business = new JSONStringValue("business");
            JSONStringValue jsv_value_Business = new JSONStringValue("Tractor Tavern");
            jsonNameValuePairs.Add(jsv_name_Business, jsv_value_Business);

            JSONStringValue jsv_name_Address = new JSONStringValue("address");
            JSONStringValue jsv_value_Address = new JSONStringValue("5213 Ballard Ave NW");
            jsonNameValuePairs.Add(jsv_name_Address, jsv_value_Address);

            JSONStringValue jsv_name_City = new JSONStringValue("city");
            JSONStringValue jsv_value_City = new JSONStringValue("Seattle");
            jsonNameValuePairs.Add(jsv_name_City, jsv_value_City);

            JSONStringValue jsv_name_State = new JSONStringValue("state");
            JSONStringValue jsv_value_State = new JSONStringValue("WA");
            jsonNameValuePairs.Add(jsv_name_State, jsv_value_State);

            JSONStringValue jsv_name_Zipcode = new JSONStringValue("zipcode");
            JSONNumberValue jsv_value_Zipcode = new JSONNumberValue(98107);
            jsonNameValuePairs.Add(jsv_name_Zipcode, jsv_value_Zipcode);

            JSONStringValue jsv_name_Latitude = new JSONStringValue("latitude");
            JSONNumberValue jsv_value_Latitude = new JSONNumberValue(47.665663);
            jsonNameValuePairs.Add(jsv_name_Latitude, jsv_value_Latitude);

            JSONStringValue jsv_name_Longitude = new JSONStringValue("longitude");
            JSONNumberValue jsv_value_Longitude = new JSONNumberValue(-122.382343);
            jsonNameValuePairs.Add(jsv_name_Longitude, jsv_value_Longitude);

            JSONStringValue jsv_name_CoverCharge = new JSONStringValue("covercharge");
            JSONBoolValue jsv_value_CoverCharge = new JSONBoolValue(true);
            jsonNameValuePairs.Add(jsv_name_CoverCharge, jsv_value_CoverCharge);

            JSONStringValue jsv_name_Url = new JSONStringValue("url");
            JSONStringValue jsv_value_Url = new JSONStringValue("http://tractortavern.citysearch.com/");
            jsonNameValuePairs.Add(jsv_name_Url, jsv_value_Url);

            // Add an array of payment methods
            JSONStringValue jsv_name_PaymentMethods = new JSONStringValue("paymentmethods");
            List<JSONValue> listPaymentMethods = new List<JSONValue>();
            listPaymentMethods.Add(new JSONStringValue("Cash"));
            listPaymentMethods.Add(new JSONStringValue("Visa"));
            listPaymentMethods.Add(new JSONStringValue("Mastercard"));
            listPaymentMethods.Add(new JSONStringValue("American Express"));
            JSONArrayCollection jsv_value_PaymentMethods = new JSONArrayCollection(listPaymentMethods);
            jsonNameValuePairs.Add(jsv_name_PaymentMethods, jsv_value_PaymentMethods);

            // Construct our object, passing the Dictionary of name/value pairs.  We could have
            // created our JSONObjectCollection first, then called the Add() method to populate
            // the object's internal Dictionary.
            JSONObjectCollection jsonObjectCollection = new JSONObjectCollection(jsonNameValuePairs);

            // The ToString() is the compact representation of the object's JSON output
            Console.WriteLine("JSONObjectCollection.ToString()");
            Console.WriteLine("===============================");
            Console.WriteLine(jsonObjectCollection.ToString());
            Console.WriteLine("===============================");
            Console.WriteLine();
            // PrettyPrint() is great for readability
            Console.WriteLine("JSONObjectCollection.PrettyPrint()");
            Console.WriteLine("===============================");
            Console.WriteLine(jsonObjectCollection.PrettyPrint());
            Console.WriteLine("===============================");
        }
예제 #6
0
        public bool reflashDictCache()
        {
            bool isSuccess = false;

            JSONObjectCollection jsonGraph = new JSONObjectCollection();

            JSONObjectCollection jarr = new JSONObjectCollection();

            ICriteria icr = CreateCriteria<DictTypeModel>();
            IList<DictTypeModel> dictTypes=icr.List<DictTypeModel>();
            icr=CreateCriteria<DictModel>();
            IList<DictModel> dicts=icr.List<DictModel>();
            foreach (DictTypeModel dictType in dictTypes) {
                IList<DictModel> tempDicts=new List<DictModel>();
                foreach (DictModel dict in dicts) {
                    if (dict.type != dictType.id) { continue; }
                    tempDicts.Add(dict);
                }
                jsonGraph.Add(new JSONStringValue(dictType.id),DatagridObject.ToDatagridObject<DictModel>(tempDicts).toJSONObjectCollection());
            }

            StringBuilder sbr = new StringBuilder("");
            sbr
            .Append("Class.forName(\"Toyz4js.cache\"); \n\n")
            .Append("Toyz4js[\"cache\"][\"DictModel\"]=").Append(jsonGraph.ToString()).Append(";  \n\n \n\n")
            .Append("Toyz4js[\"cache\"][\"DictTypeModel\"]=").Append(DatagridObject.ToDatagridObject<DictTypeModel>(dictTypes).toJSONObjectCollection()).Append(";  \n\n \n\n")
            ;
            try
            {
                FileUtil.WriteFile(this.pathDictCache, sbr.ToString());
            }
            catch(Exception ex) {
                isSuccess = false;
            }
            return isSuccess;
        }
예제 #7
0
        public bool reflashBrandCache()
        {
            bool isSucess = false;
            JSONObjectCollection jsonCraph = new JSONObjectCollection();

            StringBuilder sbr = new StringBuilder("");
            sbr
            .Append("Class.forName(\"Toyz4js.cache\"); \n\n");

            JSONObjectCollection jsonBrand = new JSONObjectCollection();

            IList<BrandModel> brands = CreateCriteria<BrandModel>().List<BrandModel>();

            sbr
            .Append("Toyz4js[\"cache\"][\"BrandModel\"][\"brands\"]=")
            .Append(DatagridObject.ToDatagridObject<BrandModel>(brands).toJSONObjectCollection().ToString())
            .Append("\n\n")
            ;

            isSucess=  FileUtil.WriteFile(pathBrandCache, sbr.ToString());

            return isSucess;
        }