我正在尝试使用WCF和C#创建一个Web服务,以向AJAX客户端提供一些数据。
我希望我的数据像这样返回(JSON):
{"Settings":{"LAN":{"IPAddress":"10.0.0.1", "SubnetMask":"255.255.255.0"},"WAN":{"Status":"Up"}}}
我已经创建了一个简单的JsonMap
类:
[Serializable]
public class JsonMap :ISerializable
{
Dictionary<string, JsonMap> children { get; set; }
public string Value { get; set; }
public JsonMap()
{
this.children = new Dictionary<string, JsonMap>();
this.Value = string.Empty;
}
public JsonMap this[string key]
{
get
{
if (!this.children.ContainsKey(key))
this.children[key] = new JsonMap();
return this.children[key];
}
set
{
this.children[key] = value;
}
}
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
foreach (string key in this.children.Keys)
if (this[key].children.Keys.Count == 0)
info.AddValue(key, this[key].Value);
else
info.AddValue(key, this[key]);
}
}
理论上,当JsonMap
类被序列化时,它应该检查孩子是否也是父母,如果是,则渲染它们 - 或者渲染孩子的价值。
然而 - 当通过WCF运行它时,它崩溃了,我没有返回数据。
我错过了一些明显的东西吗?
答案 0 :(得分:0)
这是我如何序列化到Json,它没有回答你的问题,可能没用,但可能有帮助......所以以防万一:
System.Web.Script.Serialization.JavaScriptSerializer o = new System.Web.Script.Serialization.JavaScriptSerializer();
string JsonString = o.Serialize(MyObject);