Làm thế nào để bỏ qua các trường và thuộc tính Điều kiện trong quá trình tuần tự hóa bằng JSON.Net? Tôi không thể kế thừa từ JsonIgnoreAttribute
vì đây là lớp học sealed
. Tôi nên làm gì?Làm thế nào để bỏ qua các trường và thuộc tính Điều kiện trong quá trình tuần tự hóa bằng JSON.Net?
Làm thế nào để bỏ qua các trường và thuộc tính Điều kiện trong quá trình tuần tự hóa bằng JSON.Net?
Trả lời
tôi thấy câu trả lời. Tôi kế thừa từ JsonConverter
và tạo trình chuyển đổi mới.
public class CustomJsonConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var list = (IList)value;
JArray s = new JArray();
foreach (var item in list)
{
JToken token = JToken.FromObject(item);
JObject obj = new JObject();
foreach (JProperty prop in token)
{
if (prop.Name != "Title") // your logic here
obj.Add(prop);
}
s.Add(obj);
}
s.WriteTo(writer);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException("Unnecessary because CanRead is false. The type will skip the converter.");
}
public override bool CanRead
{
get { return false; }
}
public override bool CanConvert(Type objectType)
{
return objectType != typeof(IList);
}
}
Bạn có thể sử dụng JSON.NET's ShouldSerialize -syntax. Có một ví dụ điển hình trên trang web JSON.NET:
http://www.newtonsoft.com/json/help/html/ConditionalProperties.htm
public class Employee
{
public string Name { get; set; }
public Employee Manager { get; set; }
public bool ShouldSerializeManager()
{
// don't serialize the Manager property if an employee is their own manager
return (Manager != this);
}
}
Nếu ShouldSerialize không phù hợp với nhu cầu của bạn, bạn có thể kiểm soát toàn bộ các serialization với ContractResolvers: http://www.newtonsoft.com/json/help/html/ContractResolver.htm
Không bao giờ có bất kỳ may mắn nhận được điều này để làm việc, breakpoints cho thấy rằng điều này thậm chí không bao giờ được gọi là trong serialization. – Wobbles
Lưu ý rằng cú pháp ShouldSerialize là một quy ước sao cho cho thuộc tính Foo, bạn sẽ có một phương thức ShouldSerializeFoo(), nó sẽ trả về một true hoặc false là liệu Foo có nên được tuần tự hóa hay không. – CharlieNoTomatoes
- 1. Làm thế nào để chuyển đổi các trường trong quá trình tuần tự hóa bằng Serde?
- 2. Bỏ qua một trường trong quá trình tuần tự hóa JSON JSON; tương tự như [XmlIgnore]?
- 3. Bỏ qua các trường rỗng trong Json.net
- 4. Json.NET - ngăn chặn tái tuần tự hóa một thuộc tính đã được tuần tự hóa
- 5. Cách làm cho Json.Net bỏ qua việc tuần tự hóa các bộ sưu tập trống
- 6. Tên khác nhau của thuộc tính JSON trong quá trình tuần tự hóa và deserialization
- 7. Làm cách nào để thay đổi tên thuộc tính khi tuần tự hóa với Json.net?
- 8. Làm thế nào để bỏ qua tuần tự hóa trường tại JSON marshalling trong DataSnap?
- 9. Json.NET Tuần tự hóa các thành viên riêng và không phải các thuộc tính chỉ đọc
- 10. Làm cách nào để bỏ qua chuỗi tuần tự hóa JavaScript mặc định cho các loại IEnumerable trong Json.Net?
- 11. Bỏ qua một thuộc tính trong quá trình deserialization
- 12. Thứ tự các thuộc tính bị rối tung lên khi được tuần tự hóa bởi JSON.NET
- 13. Làm thế nào để cung cấp cho một mảng một thuộc tính trong quá trình tuần tự hóa trong C#?
- 14. Jackson: làm thế nào để tuần tự hóa các thuộc tính được chú thích
- 15. Làm thế nào để tuần tự hóa các trường tạm thời bằng cách sử dụng jackson?
- 16. Làm thế nào để loại trừ các trường cụ thể về tuần tự hóa với jsonpickle?
- 17. Làm thế nào để bỏ qua thành viên lớp học Sự kiện để tuần tự hóa nhị phân?
- 18. trường thoáng qua cuối cùng và tuần tự hóa
- 19. Json.NET, cách tùy chỉnh tuần tự hóa để chèn một thuộc tính JSON
- 20. JSON.NET serialize JObject trong khi bỏ qua các thuộc tính null
- 21. Làm thế nào để tuần tự hóa byte [] thành JSON Array đơn giản và không phải là base64 trong JSON.net?
- 22. Làm thế nào tôi có thể yêu cầu Json.NET bỏ qua các thuộc tính trong đối tượng bên thứ 3?
- 23. Bỏ qua việc tuần tự hóa nhị phân trên thuộc tính
- 24. Newtonsoft Json.NET có thể bỏ qua tuần tự hóa danh sách trống không?
- 25. Bỏ qua một thuộc tính khi deserializing bằng cách sử dụng Json.Net với ItemRequired = Required.Always
- 26. RestSharp: Làm thế nào để bỏ qua việc tuần tự hóa các giá trị null thành JSON?
- 27. thuộc tính ngày tuần tự hóa
- 28. Máy tự động: Bỏ qua điều kiện
- 29. Json.NET làm thế nào để ghi đè lên tuần tự hóa cho một loại định nghĩa một JsonConverter tùy chỉnh thông qua một thuộc tính?
- 30. JSON.NET Tuần tự hóa trên một đối tượng có thành viên thuộc loại Stream?
Bạn đã kiểm tra [ScriptIgnore] (http://stackoverflow.com/questions/10169648/how-to-exclude-property-from-json-serialization)? – Kurubaran
@Kurubaran có nhưng tôi muốn bỏ qua một trường điều kiện .. –