Tom*_*mas 12 c# json servicestack
刚刚下载了ServiceStack.Text以在我的ASP.NET中使用它.我有许多属性的类,并希望将其中五个(字符串,整数,二进制)序列化为JSON.任何人都可以发布简单的例子如何从我的类创建JSon对象?
myt*_*thz 19
默认情况下,ServiceStack将反序列化POCO的所有公共属性.
如果您只想序列化一些属性,那么您希望使用[DataContract],[DataMember]属性(与使用MS DataContractJsonSerializer时相同的方式)来装饰您的类,例如:
[DataContract]
public class MyClass
{
public string WillNotSerializeString { get; set; }
[DataMember]
public string WillSerializeString { get; set; }
[DataMember]
public int WillSerializeInt { get; set; }
[DataMember]
public byte[] WillSerializeByteArray { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用JsonSerializer上的静态实用程序方法来(De)序列化它,或者更简洁的扩展方法,例如:
var dto = new MyClass { WillSerializeString = "some text" };
string json = dto.ToJson();
MyClass fromJson = json.FromJson<MyClass>();
Run Code Online (Sandbox Code Playgroud)
编辑:
正如@Noah提到的(来自评论),您还可以使用[IgnoreDataMember]属性来排除单个属性.
您可以[Serializable()]
在自定义类上使用该属性,然后:
JavaScriptSerializer serializer = new JavaScriptSerializer();
var Json = serializer.Serialize(myObject);
Run Code Online (Sandbox Code Playgroud)
要忽略要序列化的对象中的特定属性,只需将[NonSerialized]
attribure放在它们上即可.
更新:
鉴于您希望使用ServiceStack进行序列化,ServiceStack网站提供以下示例:
var customer = new Customer { Name="Joe Bloggs", Age=31 };
var json = JsonSerializer.SerializeToString(customer);
var fromJson = JsonSerializer.DeserializeFromString<Customer>(json);
Run Code Online (Sandbox Code Playgroud)
资料来源:http://www.servicestack.net/mythz_blog/? p = 344