使用JavaScriptSerializer進行序列化時,可以忽略該類的某些字段?有關JavaScriptSerializer的一些問題
使用JavaScriptSerializer進行序列化時,我們是否可以更改字段的名稱? 例如,該字段是字符串is_OK,但我希望它被映射到isOK?
1
A
回答
6
對於最大的靈活性(因爲你提到的名字一樣),理想的是調用RegisterConverters
的JavaScriptSerializer
對象上,註冊一個或更多JavaScriptConverter
實現(可能在數組或迭代器塊中)。
然後,您可以實施Serialize
,通過向您返回的詞典添加鍵/值對,在任何名稱下添加(或不)和值。如果數據是雙向的,你也需要匹配Deserialize
,但通常(對於Ajax服務器),這不是必需的。
完整的示例:
using System;
using System.Collections.Generic;
using System.Web.Script.Serialization;
class Foo
{
public string Name { get; set; }
public bool ImAHappyCamper { get; set; }
private class FooConverter : JavaScriptConverter
{
public override object Deserialize(System.Collections.Generic.IDictionary<string, object> dictionary, System.Type type, JavaScriptSerializer serializer)
{
throw new NotImplementedException();
}
public override System.Collections.Generic.IEnumerable<System.Type> SupportedTypes
{
get { yield return typeof(Foo); }
}
public override System.Collections.Generic.IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
{
var data = new Dictionary<string, object>();
Foo foo = (Foo)obj;
if (foo.ImAHappyCamper) data.Add("isOk", foo.ImAHappyCamper);
if(!string.IsNullOrEmpty(foo.Name)) data.Add("name", foo.Name);
return data;
}
}
private static JavaScriptSerializer serializer;
public static JavaScriptSerializer Serializer {
get {
if(serializer == null) {
var tmp = new JavaScriptSerializer();
tmp.RegisterConverters(new [] {new FooConverter()});
serializer = tmp;
}
return serializer;
}
}
}
static class Program {
static void Main()
{
var obj = new Foo { ImAHappyCamper = true, Name = "Fred" };
string s = Foo.Serializer.Serialize(obj);
}
}
12
您可以使用[ScriptIgnore]跳過一個屬性:
using System;
using System.Web.Script.Serialization;
public class Group
{
// The JavaScriptSerializer ignores this field.
[ScriptIgnore]
public string Comment;
// The JavaScriptSerializer serializes this field.
public string GroupName;
}
相關問題
- 1. 有關NHibernate的GuidCombGenerator的一些問題
- 2. 有關TeamCity的一些問題
- 3. 有關TestComplete的一些問題
- 4. 有關linux信號的一些問題
- 5. 有關Qt pro-file的一些問題
- 6. 有關OAuth和Android的一些問題
- 7. 有關SQL組的一些問題
- 8. 有關Grails服務的一些問題
- 9. 有關pthread_mutex_lock的一些問題
- 10. 有關mexLasso功能的一些問題
- 11. 一些與IPv6有關的問題
- 12. 有關緩存的一些問題
- 13. 有關Java的一些基本問題
- 14. 關於關注WPF的一些問題
- 15. 有關C++開發人員有關C++的一些問題
- 16. javascriptserializer日期格式問題
- 17. 有一些問題 「的console.log」
- 18. 一個C#JavaScriptSerializer序列串具有使得在javascript問題backslashs
- 19. 關於流的一些問題
- 20. 關於'delayed_job'的一些基本問題
- 21. 關於Java AbstractProcessor的一些問題?
- 22. 關於使用resque的一些問題
- 23. modernizr.js關於它的一些小問題
- 24. 關於Mulesoft的一些概念問題
- 25. 關於C++的一些問題try catch
- 26. 關於Scanf的一些問題
- 27. 關於Asp.net MVC的一些問題
- 28. 關於iOS開發的一些問題
- 29. 一些Sonatype的關係問題
- 30. 關於RIA服務的一些問題