2 回答

TA貢獻1821條經驗 獲得超6個贊
您可以使用 Json.Net 的LINQ-to-JSON?API 執行以下操作:
var namesToKeep = new string[] { "ID", "Code", "OrderDetails", "ItemID", "Quantity" };
var jArray = JArray.Parse(jsonString);
foreach (var prop in jArray.Descendants().OfType<JProperty>().ToList())
{
? ? if (!namesToKeep.Contains(prop.Name))
? ? ? ? prop.Remove();
}
jsonString = jArray.ToString();
小提琴: https:?//dotnetfiddle.net/Pj9Wsu

TA貢獻1869條經驗 獲得超4個贊
為了從序列化中排除屬性,您需要使用[JsonIgnore]attribute 來標記屬性。
像這樣的東西:
public class OrderDetail
{
public int ID { get; set; }
public int OrderID { get; set; }
public int ItemID { get; set; }
[JsonIgnore]
public double Quantity { get; set; }
[JsonIgnore]
public double ConfirmQuantity { get; set; }
[JsonIgnore]
public DateTime ConfirmDate { get; set; }
[JsonIgnore]
public DateTime Deadline { get; set; }
[JsonIgnore]
public bool IsCanceled { get; set; }
[JsonIgnore]
public int PersonnelID { get; set; }
[JsonIgnore]
public bool IsConfirmed { get; set; }
}
public class RootObject
{
public int ID { get; set; }
public string Code { get; set; }
[JsonIgnore]
public int SupplierID { get; set; }
[JsonIgnore]
public DateTime Date { get; set; }
public List<OrderDetail> OrderDetails { get; set; }
}
但我實際上建議您將原始集合投影到具有屬性子集的對象集合中。
最簡單的方法是僅使用要序列化的屬性定義新類,并將其從一個類映射到另一個類(使用普通 LINQSelect或某種映射器):
public class OrderDetailModel
{
public int ID { get; set; }
public int OrderID { get; set; }
public int ItemID { get; set; }
}
public class RootObjectModel
{
public int ID { get; set; }
public string Code { get; set; }
public List<OrderDetailModel> OrderDetails { get; set; }
}
- 2 回答
- 0 關注
- 147 瀏覽
添加回答
舉報