【发布时间】:2013-04-15 12:32:50
【问题描述】:
为什么下面的代码应该返回 "{"id":1999, "title":"hithere"}
JavaScriptSerializer serializer = new JavaScriptSerializer();
StringBuilder sbJsonResults = new StringBuilder();
var result = serializer.Serialize(new dg(1999, "hithere"));
context.Response.Clear();
context.Response.ContentType = "application/json; charset=utf-8";
context.Response.Cache.SetExpires(DateTime.MinValue);
context.Response.Write(result);
附: dg 类如下所示:
public class dg : ScheduleObserver, ILibrary, IEnumerable {
public int id;
public string title;
private List<d> dList;
...many getters and setters and some logic functions...
}
public abstract class ScheduleObserver{
public abstract void update();
}
public interface ILibrary {
List<PD> getPDs();
void setPDs(List<PD> newPDs);
int getCurrentIndex();
void addPD(PD pD);
PD getPD(int index);
}
非常感谢。
谢谢 - 回答成功 - IEnumerable 是我痛苦的根源。为了解决这个问题,dg 不再扩展 IEnumerable 并且所有 foreach (dg...) 循环都已转换回 for(int i = 0...) 循环。
非常非常感谢! JAMES 知道为什么它是空的,Parv 知道为什么有方括号。将两者都标记为答案,但只能标记一个。
【问题讨论】:
-
dg=[serializable]? -
dg 是否有一个与您的示例中的重载匹配的构造函数,并且该重载是否正确地将值分配给相应的属性?
-
@Brad - 在 dg 上有或没有 [Serializable] 标记时,我得到相同的结果
-
@Dmitri - 是的,有构造函数,并且可以在调试中单步执行以查看 dg 对象是否正确(与上面的代码不同,但可以完成)
-
您尚未发布
ScheduleObserver的实现,但据我所知,您没有任何 public setter/getter。
标签: c# json javascriptserializer