我正在使用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);
}
}
成员语言
、组
和用户
在调用WCF服务时成功填充,但是
JsonConvert.SerializeObject(lookup, DateConverter)
总是向客户端(网络浏览器)返回一个空的 JSON 字符串,这很奇怪,因为它通常在其他领域对我来说工作得很好,唯一的区别是在这里我将填充的 WebLookup
成员声明为类本身的公共(public)属性。
最佳答案
语言、组和用户属性需要声明为公共(public)成员,以便通过 JSON.NET 或内置 JavaScriptSerializer 进行序列化,但您的代码中并非如此。
关于c# - 使用 JSON.NET 序列化公共(public)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8562076/