作业帮 > 综合 > 作业

求 C# json 解析类

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 10:51:29
求 C# json 解析类
有数组应该怎样解析出来呢?
/// <summary>
        /// 将对象转化城Json
        /// </summary>
        /// <param name="obj">对象</param>
        /// <returns></returns>
        public static string ToJson(object obj)
        {
            string output = string.Empty;
            DataContractJsonSerializer dcJson = new DataContractJsonSerializer(obj.GetType());
            using (MemoryStream ms = new MemoryStream())
            {
                dcJson.WriteObject(ms, obj);
                output = Encoding.UTF8.GetString(ms.ToArray());
            }
            return output;
        }
        /// <summary>
        /// 将Json字符串转化成对象 
        /// </summary>
        /// <param name="type">对象的类型</param>
        /// <param name="output">Json字符串</param>
        /// <returns></returns>
        public static object ToClass(Type type, string output)
        {
            object result;
            DataContractJsonSerializer outDs = new DataContractJsonSerializer(type);
            using (MemoryStream outMs = new MemoryStream(Encoding.UTF8.GetBytes(output)))
            {
                result = outDs.ReadObject(outMs);
            }
            return result;
        }
再问: 这种解析貌似不太正确吧 有数组在里面怎么处理啊
再答: 比如你的数组是 string[] 解析是这么处理
string[] s = ToClass(typeOf(string[]), json字符串);

如果是生产json 就直接
string jsonString = ToJson(你的数组);
这样就可以了

你只需要把最外层那个json类解析了。里面的数组会自动解析
再问: 请问下 这个 DataContractJsonSerializer 没找到 是在那个dll 里呢? 要引用什么呢?
再答: 这个System.Runtime.Serialization

using System.Runtime.Serialization.Json;
再问: string[] s = ToClass(typeOf(string[]), json字符串);
;typeOf(string[]), 参数1 应该填写什么呢? 都填写不正确哦
再答: string[]   s = (string[])ToClass(typeof(string[]), "json字符串"); typeof 是全部小写的上面写错了
把ToClass写成这样更好用        /// <summary>
        /// 将Json字符串转化成对象
        /// </summary>
        /// <typeparam name="T">转换的对象类型</typeparam>
        /// <param name="output">json字符串</param>
        /// <returns></returns>
        public static T ToClass<T>(string output)
        {
            object result;
            DataContractJsonSerializer outDs = new DataContractJsonSerializer(typeof(T));
            using (MemoryStream outMs = new MemoryStream(Encoding.UTF8.GetBytes(output)))
            {
                result = outDs.ReadObject(outMs);
            }
            return (T)result;
        }用法 string[]   s = ToClass<string[]>("json字符串");