gpt4 book ai didi

asp.net - 仅使用 json 序列化对象的一部分

转载 作者:行者123 更新时间:2023-12-04 06:34:27 26 4
gpt4 key购买 nike

我有一个名为 MyObject 的对象,它具有多个属性。 MyList 是我用 linq 查询填充的 MyObject 列表,然后我将 MyList 序列化为 json。我最终得到了这样的东西

    List<MyObject> MyList = new List<MyObject>();

MyList = TheLinqQuery(TheParam);

var TheJson = new System.Web.Script.Serialization.JavaScriptSerializer();
string MyJson = TheJson.Serialize(MyList);

我想要做的是仅序列化 MyObject 的一部分。例如,我可能有 Property1、Property2...Property,我希望 MyJson 只包含 Property3、Property5 和 Property8。

我想到了一种方法,即创建一个仅包含我想要的属性的新对象,然后从那里创建一个新的序列化列表。这是最好的方法还是有更好/更快的方法?

谢谢。

最佳答案

// simple dummy object just showing what "MyObject" could potentially be
public class MyObject
{
public String Property1;
public String Property2;
public String Property3;
public String Property4;
public String Property5;
public String Property6;
}

// custom converter that tells the serializer what to do when it sees one of
// the "MyObject" types. Use our custom method instead of reflection and just
// dumping properties.
public class MyObjectConverter : JavaScriptConverter
{
public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
throw new ApplicationException("Serializable only");
}

public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
{
// create a variable we can push the serailized results to
Dictionary<string, object> result = new Dictionary<string, object>();

// grab the instance of the object
MyObject myobj = obj as MyObject;
if (myobj != null)
{
// only serailize the properties we want
result.Add("Property1", myobj.Property1);
result.Add("Property3", myobj.Property3);
result.Add("Property5", myobj.Property5);
}

// return those results
return result;
}

public override IEnumerable<Type> SupportedTypes
{
// let the serializer know we can accept your "MyObject" type.
get { return new Type[] { typeof(MyObject) }; }
}
}

然后你在哪里序列化:
// create an instance of the serializer
JavaScriptSerializer serializer = new JavaScriptSerializer();
// register our new converter so the serializer knows how to handle our custom object
serializer.RegisterConverters(new JavaScriptConverter[] { new MyObjectConverter() });
// and get the results
String result = serializer.Serialize(MyObjectInstance);

关于asp.net - 仅使用 json 序列化对象的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4998595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com