我有一个简单的对象:
[DataContract]
public class MyClass
{
[DataMember(Name = "MyClassNo")]
public int MyClassNo { get; set; }
[DataMember(Name = "MyName")]
public string MyName { get; set; }
}
当我通过我的网络服务序列化时,我得到了
[
{"MyClassNo": 1, "MyName": "Test1"},
{"MyClassNo": 2, "MyName": "Test2"}
]
但我想要的是没有包含属性名称的数据:
[
{1, "Test1"},
{2, "Test2"}
]
我如何实现这一目标?
*编辑 - 我用来序列化的代码是:
var myObj = MyOpenSQlConnection.Query<MyClass>(@"select MyClassNo, MyName from MyTable");
return myObj.ToList<MyClass>();
请注意,我正在使用Dapper-dot-net将sql结果映射到我的对象
答案 0 :(得分:0)
您可以为所有成员指定此属性:[DataMember(Name =“REMOVE”)] 然后用空字符串替换它:)
答案 1 :(得分:0)
如果不编写自己的序列化程序,将序列化为属性哈希以外的其他内容,则无法执行此操作。散列是键值字段的序列,因此每个字段必须具有唯一的键。
如果您为每个键尝试了空白值,请执行以下操作:
{"": "apple", "": "banana", "": "coconut"}
那么你真正拥有的只是:
{"": "coconut"}
因为每个密钥都会覆盖它之前的密钥。
更好的问题可能是,“为什么要在没有属性名称的情况下进行序列化?”特别是在基于Web的环境中,您将需要知道哪个值对应于哪个字段。
答案 2 :(得分:0)
如果您可以保证MyClassNo
始终不同,那么您可以返回Dictionary<int, string>
,如果List<MyClass>
可能更符合什么你在追求。