Silverlight 3可以序列化匿名对象吗?
答案 0 :(得分:1)
没有silverlight 3无法序列化匿名类型。 Silverlight唯一的JSON序列化程序是DataContractJsonSerializer
。但是,这需要使用DataContractAttribute
来装饰类型,并使用DataMemberAttribute
来装饰成员,这对于匿名类型是不正确的。
但是,如果您的目的是查询某些现有数据并生成JSON字符串输出,那么您可以考虑使用System.Json
命名空间中的类。这是一个例子: -
/// <summary>
/// Helper methods to reduce code needed in constructing JSON items
/// </summary>
public static class JsonHelper
{
public static KeyValuePair<string, JsonValue> CreateProperty(string name, string value)
{
return new KeyValuePair<string, JsonValue>(name, new JsonPrimitive(value));
}
public static KeyValuePair<string, JsonValue> CreateProperty(string name, int value)
{
return new KeyValuePair<string, JsonValue>(name, new JsonPrimitive(value));
}
// Replicate above for each constructor of JsonPrimitive
public static KeyValuePair<string, JsonValue> CreateProperty(string name, JsonValue value)
{
return new KeyValuePair<string, JsonValue>(name, value);
}
}
以上只是一个帮助程序静态类,因此以下LINQ查询中的代码不会变得毛茸茸。 DataProvider
只生成一些测试数据,在这种情况下是具有Name
属性的对象列表。这个noddy示例只生成一个对象列表,这些对象具有name
属性和count
属性,该属性包含name属性中的字符数。
var list = from item in DataProvider.DataItems()
select (JsonValue)(new JsonObject(
JsonHelper.CreateProperty("name", item.Name),
JsonHelper.CreateProperty("count", item.Name.Length)
));
var result = (new JsonArray(list)).ToString();
答案 1 :(得分:-1)
你的意思是var
中的匿名吗?这不能被任何东西序列化。