【发布时间】:2015-10-21 08:15:13
【问题描述】:
我有一个这样的 JSON 对象:
public class RootObject
{
public string Number { get; set; }
public string ChannelType { get; set; }
public string ServiceName { get; set; }
public List<ImageInfos> ImageInfos { get; set; }
public bool IsInMixedFolder { get; set; }
public string Name { get; set; }
public string Id { get; set; }
public string DateCreated { get; set; }
public string DateModified { get; set; }
public string DateLastSaved { get; set; }
public List<object> LockedFields { get; set; }
public string ParentId { get; set; }
public List<string> Studios { get; set; }
public List<string> Genres { get; set; }
public ProviderIds ProviderIds { get; set; }
}
像这样的 ImageInfos:
public class ImageInfos
{
private string Path;
private string Type;
private string DateModified;
public ImageInfos(string Path, string Type, string DateModified)
{
this.Path = Path;
this.Type = Type;
this.DateModified = DateModified;
}
我正在尝试用值填充 json ImageInfos-List 并将其序列化为新字符串:
jsonObject = JsonConvert.DeserializeObject<RootObject>(json);
List<ImageInfos> newInfos = new List<ImageInfos>();
newInfos.Add(new ImageInfos("Test", "Test", "Test"));
jsonObject.ImageInfos = newInfos;
string newJSON = JsonConvert.SerializeObject(jsonObject);
但是新的 json 看起来是这样的:
"{\"Number\":\"35\",\"ChannelType\":\"TV\",\"ServiceName\":\"DVBLink\",\"ImageInfos\":[{} ],\"IsInMixedFolder\":false,\"Name\":\"13th Street HD\",\"Id\":\"466ab1fb9be4f77e65ad2b229a15c326\",\"DateCreated\":\"2015-09-14T12: 55:51.4081476Z\",\"DateModified\":\"0001-01-01T00:00:00.0000000Z\",\"DateLastSaved\":\"2015-10-17T13:34:37.4214116Z\",\ "LockedFields\":[],\"ParentId\":\"00000000000000000000000000000000\",\"Studios\":[],\"Genres\":[],\"ProviderIds\":{\"ProviderExternalId\" :\"13250000\"}}"
为什么新 JSON 字符串中的 ImageInfos 为空?
【问题讨论】:
-
ImageInfos的所有属性都是私有的。 Json.NET 默认不会序列化它们。要强制它序列化私有属性,请将[JsonProperty]属性添加到每个属性。