C# 不使用json.net反序列化json数据

C# 不使用json.net反序列化json数据,c#,json,windows-phone-8,scheduled-tasks,C#,Json,Windows Phone 8,Scheduled Tasks,我在日程安排代理公司工作。我在schedule agent中有json格式的数据。我尝试在schedule agent中使用Json.net将Json反序列化到列表中,但在schedule agent中不起作用 有谁能告诉我如何在不使用Jsonssoft.dll的情况下将json数据反序列化为列表格式 我正在使用下面的代码将json转换为list,但它在childlist中给了我null List<ConferenceModel> childlist = new List&l

我在日程安排代理公司工作。我在schedule agent中有json格式的数据。我尝试在schedule agent中使用Json.net将Json反序列化到列表中,但在schedule agent中不起作用

有谁能告诉我如何在不使用Jsonssoft.dll的情况下将json数据反序列化为列表格式

我正在使用下面的代码将json转换为list,但它在childlist中给了我null

    List<ConferenceModel> childlist = new List<ConferenceModel>();
    MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(responseContent));
    DataContractJsonSerializer ser = new DataContractJsonSerializer(childlist.GetType());
    childlist = ser.ReadObject(ms) as List<ConferenceModel>;
这是会议示范班

public class Conference 
{
    public string id { get; set; }
    public string datetime { get; set; }
    public string updateDateTime { get; set; }
    public int duration { get; set; }
    public string description { get; set; }
    private bool _isEditDeleteVisible;

}
public class ConferenceModel
{
    public List<Conference> conferences { get; set; }
}

尝试在模型中使用DataContract注释+使用DataContractJsonSerializer,它应该可以正常工作:

[DataContract]
public class Conference
{
    [DataMember]
    public string id { get; set; }
    [DataMember]
    public string datetime { get; set; }
    [DataMember]
    public string updateDateTime { get; set; }
    [DataMember]
    public int duration { get; set; }
    [DataMember]
    public string description { get; set; }
    [IgnoreDataMember]
    private bool _isEditDeleteVisible;
}

[DataContract]
public class ConferenceModel
{
    [DataMember]
    public List<Conference> conferences { get; set; }
}

我知道这是一个老帖子,但我想我会分享。我也在寻找一个支持动态对象的可靠JSON库。在我看来,如果您只需要一个简单的JSON解析器,那么JSON.NET就太大了

所以我写了下面这节课。它也在GitHub和NuGet上

GitHub:

NuGet:安装程序包JSON\U Helper

using System.Collections.Generic;
using System.Web.Script.Serialization;

namespace JSON_Helper
{
    public static class JSON
    {
        private static JavaScriptSerializer Serializer { get; } = new JavaScriptSerializer();
        public static string Encode(object JsonObject)
        {
            return Serializer.Serialize(JsonObject);
        }
        public static T Decode<T>(string JsonString)
        {
            return Serializer.Deserialize<T>(JsonString);
        }
        public static dynamic Decode(string JsonString)
        {
            var deserialized = Serializer.Deserialize<dynamic>(JsonString);
            dynamic result = new System.Dynamic.ExpandoObject();
            foreach (KeyValuePair<string, object> item in deserialized)
            {
                ((IDictionary<string, object>)result).Add(item.Key, item.Value);
            }
            return result;
        }
    }
}

WP8是否有?是的,在WP8 DataContractJsonSerializer中有。我怎么用呢?嗯。。。如果需要,添加一个参考;如果需要,添加使用指令;然后新建一个DataContractJsonSerializer,并按照MSDN中的示例使用它?您能给我们展示ConferenceModel的代码吗?请记住,它必须使用DataContract属性标记,其成员必须使用DataMember属性标记。很抱歉,它的JsonSoft包用于序列化和反序列化json数据。您好,我尝试了它,但在childlist中仍然得到空值。以下是我必须在列表{conferences:[{id:1369,datetime:2014-02-19 11:52:00,duration:15,description:},{id:1371,datetime:2014-02-19 16:53:00,duration:15,description:}]中转换的json。我现在看到问题了,我的答案已经解决了。
using System.Collections.Generic;
using System.Web.Script.Serialization;

namespace JSON_Helper
{
    public static class JSON
    {
        private static JavaScriptSerializer Serializer { get; } = new JavaScriptSerializer();
        public static string Encode(object JsonObject)
        {
            return Serializer.Serialize(JsonObject);
        }
        public static T Decode<T>(string JsonString)
        {
            return Serializer.Deserialize<T>(JsonString);
        }
        public static dynamic Decode(string JsonString)
        {
            var deserialized = Serializer.Deserialize<dynamic>(JsonString);
            dynamic result = new System.Dynamic.ExpandoObject();
            foreach (KeyValuePair<string, object> item in deserialized)
            {
                ((IDictionary<string, object>)result).Add(item.Key, item.Value);
            }
            return result;
        }
    }
}