我正在使用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
成员作为班级本身的公共财产。
答案 0 :(得分:5)
语言,组和用户属性需要声明为公共成员才能通过JSON.NET或内置JavaScriptSerializer进行序列化,但代码中并非如此。