【发布时间】:2017-10-17 18:22:31
【问题描述】:
是否可以让JavaScriptSerializer 也可以在没有设置器的情况下填充属性?比如下面代码中test.ID这样的属性:
using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace JavaScriptConverterTest
{
class Program
{
static void Main(string[] args)
{
List<test> list = new List<test>();
for (int i = 0; i < 2; i++)
{
list.Add(new test(Guid.NewGuid(), "Item #" + i));
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(list);
List<test> newList = serializer.Deserialize<List<test>>(jsonString);
Console.Read();
}
}
class test
{
private Guid id = Guid.Empty;
public Guid ID
{
get { return id; }
// Without a setter, JavaScriptSerializer doesn't populate this property.
// set { id = value; }
}
public string name = "";
public test()
{
}
public test(Guid id, string name)
{
this.id = id;
this.name = name;
}
}
}
【问题讨论】:
-
如果你创建了一个私有的 setter,一些序列化将起作用。其他序列化程序允许您使用属性,以便它可以绕过属性直接写入字段。我不知道这个是如何工作的。
-
@JonathanAllen,谢谢,很高兴知道,但现在我正在寻找使用 C# 内置序列化程序的解决方案(实际上它不必是 JSON)
-
我说的是内置的。不幸的是,微软多年来制造了如此多的产品,以至于我无法将它们分开。所以我能提供的最好的就是在文档中寻找什么。
标签: c# .net json javascriptserializer