【发布时间】:2011-12-19 13:31:23
【问题描述】:
我正在使用 JSON.NET 实现将 .NET 对象序列化/反序列化为 JS,反之亦然,在运行 GetWCFData() 之前一切正常:
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
public class WebLookup
{
WCFService.WCFServiceClient svc;
IsoDateTimeConverter DateConverter = new IsoDateTimeConverter();
List<WCFContract.Language> Languages { get; set; }
List<WCFContract.Group> Groups { get; set; }
List<WCFContract.User> Users { get; set; }
public WebLookup()
{
DateConverter.DateTimeFormat = "dd/MM/yyyy";
DateConverter.DateTimeStyles = System.Globalization.DateTimeStyles.AssumeLocal;
}
public string GetWCFData()
{
svc = new WCFService.WCFServiceClient();
WebLookup weblookup = new WebLookup();
weblookup.Languages = svc.GetWCFLanguages().ToList();
weblookup.Groups = svc.GetWCFGroups().ToList();
weblookup.Users = svc.GetWCFUsers().ToList();
return JsonConvert.SerializeObject(weblookup, DateConverter);
}
}
成员 Languages、Groups 和 Users 在调用 WCF 服务时成功填充,但
JsonConvert.SerializeObject(lookup, DateConverter) 总是向客户端(Web 浏览器)返回一个空 JSON 字符串,这很奇怪,因为它通常在其他领域对我来说效果很好,唯一的区别是这里我将填充的 WebLookup 成员声明为公共属性类本身。
【问题讨论】:
-
有什么理由不使用内置的
JavaScriptSerializer或DataContractJsonSerializer? -
您收到的错误是什么?
-
我实际上只是将序列化行替换为:return new JavaScriptSerializer().Serialize(weblookup) 以查看它是否有任何不同但得到相同的结果,一个空字符串。
-
@Bojan-Skrchevski 没有错误,只是一个空字符串,尽管 weblookup 的语言、组和用户填充了值。
-
@Maya - 我也没有在 WebLookup 类中看到序列化属性。你是否包括:[JsonObject(MemberSerialization.[option])] ???
标签: c# wcf json serialization json.net