首页 新闻 赞助 找找看

C# json转对象,求大侠指点(网上找的方法如何使用)

0
[已解决问题] 解决于 2018-02-06 08:34
复制代码
#region 将JSON格式字符转换成对象
        
        /// <summary>
        /// 将JSON格式字符转换成对象
        /// </summary>
        /// <typeparam name="T">需要转换的对象类型</typeparam>
        /// <param name="target">JSON目标</param>
        /// <returns>转换结果</returns>
        public static T JsonDeserialize<T>(this string target)
        {
            try
            {
                using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(target)))
                {
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                    return (T)serializer.ReadObject(ms);
                }
            }
            catch (Exception ex)
            {
                return default(T);
            }
        }
        #endregion

        #region 将对象转换为JSON格式的字符串

        /// <summary>
        /// 将对象转换为JSON格式的字符串
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="target">对象目标</param>
        /// <returns>转换结果</returns>
        public static string JsonSerialize<T>(this T target)
        {
            try
            {
                T result = (T)target;

                DataContractJsonSerializer json = new DataContractJsonSerializer(result.GetType());

                using (MemoryStream stream = new MemoryStream())
                {
                    json.WriteObject(stream, result);
                    return Encoding.UTF8.GetString(stream.ToArray());
                }
            }
            catch (Exception ex)
            {
                return null;
            }
        }
        #endregion
复制代码

我的调用:但是mes对象为空,不知道是不是用错了

SysMessage mes= JsonHelper.JsonDeserialize<SysMessage>(JsonString);
        [Serializable]
        public partial class SysMessage
        {
            public string returnData { get; set; }
        }

 调试的时候报错:

数据协定类型“Yuyue.WPF.login+SysMessage”无法反序列化,因为未找到必需的数据成员“<returnData>k__BackingField”。

大da脸的主页 大da脸 | 初学一级 | 园豆:73
提问于:2018-02-06 08:23
< >
分享
最佳答案
0

[Serializable]
public class SysMessage
{
public string returnData = string.Empty;
}

去除实体类中的属性就可以了

大da脸 | 初学一级 |园豆:73 | 2018-02-06 08:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册