我正在使用Json.NET将类序列化为JSON.
我有这样的课:
class Test1
{
[JsonProperty("id")]
public string ID { get; set; }
[JsonProperty("label")]
public string Label { get; set; }
[JsonProperty("url")]
public string URL { get; set; }
[JsonProperty("item")]
public List<Test2> Test2List { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想将添加JsonIgnore()属性,Test2List只有当财产Test2List是null.如果它不为null,那么我想将它包含在我的json中.
我有一些数据,我必须序列化为JSON.我正在使用JSON.NET.我的代码结构与此类似:
public struct structA
{
public string Field1;
public structB Field2;
public structB Field3;
}
public struct structB
{
public string Subfield1;
public string Subfield2;
}
Run Code Online (Sandbox Code Playgroud)
问题是,我的JSON输出需要只有Field1OR Field2或Field3- 它取决于使用哪个字段(即不为空).默认情况下,我的JSON看起来像这样:
{
"Field1": null,
"Field2": {"Subfield1": "test1", "Subfield2": "test2"},
"Field3": {"Subfield1": null, "Subfield2": null},
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用NullValueHandling.Ignore,但这给了我看起来像这样的JSON:
{
"Field2": {"Subfield1": "test1", "Subfield2": "test2"},
"Field3": {}
}
Run Code Online (Sandbox Code Playgroud)
而我需要的是:
{
"Field2": {"Subfield1": "test1", "Subfield2": "test2"},
}
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法来实现这一目标?
namespace Booking.Areas.Golfy.Models
{
public class Time
{
public string time { get; set; }
public int holes { get; set; }
public int slots_available { get; set; }
public decimal? price { get; set; }
public int? Nextcourseid { get; set; }
public bool ShouldSerializeNextcourseid
{
get
{
return this.Nextcourseid != null;
}
}
public bool? allow_extra { get; set; }
public bool ShouldSerializeallow_extra
{
get
{
return this.allow_extra != null;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
namespace Booking.Areas.Golfy.Controllers
{
public class …Run Code Online (Sandbox Code Playgroud) 我有一个动作,它返回一个特定类的对象的JsonResult.我已经使用一些attrib来装饰这个类的属性以避免使用null字段.类定义是:
private class GanttEvent
{
public String name { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public String desc { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public List<GanttValue> values { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的Action中我使用了一个对象
var res = new List<GanttEvent>();
Run Code Online (Sandbox Code Playgroud)
我回来使用:
return Json(res, JsonRequestBehavior.AllowGet);
Run Code Online (Sandbox Code Playgroud)
不幸的是,我仍然在输出时收到空值:
[{"name":"1.1 PREVIOS AL INICIO ","desc":null,"values":null},{"name":"F04-PGA-S10","desc":"Acta preconstrucción","values":null},{"name":"F37-PGA-S10","desc":"Plan de inversión del anticipo","values":null},{"name":"F09-PGA-S10","desc":"Acta de vecindad","values":null},{"name":"F05-PGA-S10","desc":"Acta de inicio","values":null},{"name":"F01-PGA-S10","desc":"Desembolso de anticipo","values":null}]
Run Code Online (Sandbox Code Playgroud)
我错过了什么或做错了什么?
,我有一个类,其中我现在有三个属性我想做什么,如果在对象中,如果任何一个null或空,那么我想从下面的对象中删除它是我的代码.
public class TestClass
{
public string Name { get; set; }
public int ID { get; set; }
public DateTime? DateTime { get; set; }
public string Address { get; set; }
}
TestClass t=new TestClass();
t.Address="address";
t.ID=132;
t.Name=string.Empty;
t.DateTime=null;
Run Code Online (Sandbox Code Playgroud)
现在我想要TestClass的对象,但是Name和DateTime属性不应该是它们在对象中,是否可能?请帮我