【发布时间】:2015-06-04 20:30:40
【问题描述】:
我有一个 WCF REST 服务,它有一个包含多个类型字段的资源,然后是一个可以是对象数组的字段。我希望我们服务上的字段序列化这个字段,就好像它是一个字符串一样。示例:
[DataContract]
public class User
{
[DataMember]
public long ID;
[DataMember]
public string Logon;
[DataMember]
public string Features;
}
当我们 API 的用户发布一个新的用户对象时,我希望他们能够使用这样的东西作为主体:
{
"ID" : 123434,
"Logon" : "MyLogon",
"Features" : [
{ "type": "bigFeature", "size": 234, "display":true },
{ "type": "smFeature", "windowCount": 234, "enableTallness": true}
]
}
而不是
{
"ID" : 123434,
"Logon" : "MyLogon",
"Features" : "[
{ \"type\": \"bigFeature\", \"size\": 234, \"display\":true },
{ \"type\": \"smFeature\", \"windowCount\": 234, \"enableTallness\": true}
]"
}
在服务方面,我将把“Features”数组作为 JSON 文本博客保存在数据库中,当我在 GET 调用中返回对象时,我希望它能够正确往返。
【问题讨论】:
-
所以您想获取您的 JSON 字符串,然后能够通过函数调用对其进行序列化/反序列化?
-
不,我想使用 DataContract 和 DataMember 来定义数据,但我希望其中一个字段实际上是 JSON 数组,这将允许它包含任何 JSON 对象。这样我就可以来回转换了。
-
你使用的是什么序列化程序 --
DataContractJsonSerializer或 Json.NET? -
DataContractJsonSerializer,我考虑过切换 Json.NET,但我记得有问题。您是否认为使用 Json.NET 序列化程序可以实现这一点? -
使用 Json.NET 会更容易。
DataContractJsonSerializer与DataContractSerializer共享一个用于 XML 的代码库(两者都继承自XmlObjectSerializer)并且据我所知不提供对“原始”JSON 的访问权限。
标签: c# json wcf serialization