我能弄清楚我自己的问题。我认为这个问题与我的Json数组格式有关,但我没有意识到这一点。
我试图通过关注发布here的人来使用不同的序列化类。新类抛出一个异常,表明它没有准备好反序列化数组,或者是出现这种情况。
下面是工作的结果代码:
return new JavaScriptSerializer().Deserialize<IList<HubspotObject>>(inputContent);
原题:
我试图从hubspot JSON饲料我第一次反序列化数据到一个具体的对象。我使用this codespot project的示例来帮助完成工作。
我试图反序列化代码后收到所有null属性,我根本不知道如何解决这个问题。
这里是JSON的一个例子:
[{
"blogTitle":"Practice blog",
"feedUrl":"http://feeds2.feedburner.com/asdf",
"guid":"asdf5-33f2-4a32-9495-8cd93f1f8252",
"jsonUrl":"https://hubapi.com/blog/v1/asdf-33f2-4a32-9495-8cd93f1f8252.json",
"moderated":false,
"moderators":["[email protected]"],
"portalId":42494,"webUrl":"blog.asdf.com/blog"
}]
这里是我的类:
using System;
using System.Runtime.Serialization;
namespace Json
{
[DataContract()]
public class HubspotObject : IExtensibleDataObject
{
[DataMember(Name = "authorDisplayName")]
public string AuthorDisplayName { get; set; }
[DataMember(Name = "authorEmail")]
public string Link { get; set; }
[DataMember(Name = "blogGuid")]
public string BlogId { get; set; }
[DataMember(Name = "body")]
public string Body { get; set; }
[DataMember(Name = "createTimestamp")]
public int TimeStamp { get; set; }
[DataMember(Name = "draft")]
public bool Draft { get; set; }
[DataMember(Name = "guid")]
public string Guid { get; set; }
[DataMember(Name = "jsonUrl")]
public string JsonUrl { get; set; }
[DataMember(Name = "lastUpdateTimestamp")]
public int LastUpdate { get; set; }
[DataMember(Name = "metaDescription")]
public string MetaDescription { get; set; }
[DataMember(Name = "metaKeywords")]
public string MetaKeywords { get; set; }
[DataMember(Name = "portalId")]
public int PortalId { get; set; }
[DataMember(Name = "postAnalytics")]
public PostAnalytics PostAnalytics { get; set; }
[DataMember(Name = "publishTimestamp")]
public int PublishTimestamp { get; set; }
[DataMember(Name = "sendNotifications")]
public bool SendNotifications { get; set; }
[DataMember(Name = "summary")]
public string Summary { get; set; }
[DataMember(Name = "tags")]
public string[] Tags { get; set; }
[DataMember(Name = "title")]
public string Title { get; set; }
[DataMember(Name = "url")]
public string Url { get; set; }
// WCF stores any items we did not map here
public ExtensionDataObject ExtensionData { get; set; }
}
[DataContract()]
public class PostAnalytics : IExtensibleDataObject
{
[DataMember(Name = "comments")]
public int Comments { get; set; }
[DataMember(Name = "inboundLinks")]
public int InboundLinks { get; set; }
[DataMember(Name = "views")]
public int Views { get; set; }
// WCF stores any items we did not map here
public ExtensionDataObject ExtensionData { get; set; }
}
}
最后,这里就是我反序列化线:
using (MemoryStream stream = new MemoryStream(Encoding.Unicode.GetBytes(inputContent)))
{
// Convert the stream buffer to an object with our serializer.
return serializer.ReadObject(stream) as HubspotObject;
}
同样,a在反序列化之后,这些对象中的所有对象都是null。没有例外抛出。如果我将其中一个属性的属性设置为“required”,它会在不填充时抛出一个异常,这使我认为我解析它错了,不知何故。
建议?提前致谢。
感谢您的答复,我给它一个镜头,没有效果。我对任何更多的想法感兴趣,我仍然不确定如何解决这个问题,我对这些课程非常不熟悉。 – letsgetsilly 2011-12-13 22:56:23