use*_*496 6 c# json javascriptserializer
为什么以下代码返回"[]"时应返回"{"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);
Run Code Online (Sandbox Code Playgroud)
PS 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);
}
Run Code Online (Sandbox Code Playgroud)
非常感谢.
谢谢 - 成功的答案 - 这是IEnumerable,这是我的困境的根源.为了解决这个问题,dg不再扩展IEnumerable,并且所有foreach(dg ...)循环都已转换回for(int i = 0 ...)循环.
非常非常非常感谢!詹姆斯得到了为什么它是空的,帕尔夫得到了为什么有方括号.将两者都标记为答案,但只能标记一个.
从源头来看,问题似乎是由几个因素共同造成的。
正如 @Parv 已经指出的,你得到的原因[]是因为你的类实现了IEnumerable序列化器尝试迭代对象,然后独立序列化每个项目。您当前的设计将无法工作,因为它不是为实现IEnumerable.
另一个问题,就像我在评论中提到的那样,是您的类似乎没有任何公共属性,您目前拥有的是公共变量。为了使序列化器工作,您需要属性设置器/获取器,即
public class dg
{
public int id { get; set; }
public string title { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5758 次 |
| 最近记录: |