C# 不使用json.net反序列化json数据
我在日程安排代理公司工作。我在schedule agent中有json格式的数据。我尝试在schedule agent中使用Json.net将Json反序列化到列表中,但在schedule agent中不起作用 有谁能告诉我如何在不使用Jsonssoft.dll的情况下将json数据反序列化为列表格式 我正在使用下面的代码将json转换为list,但它在childlist中给了我nullC# 不使用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
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;
}
}
}