c#等效于序列化json
c# equivalent for serializing json
为这个javascript代码创建json序列化数据的等价物是什么:
chartData.push({date: "bla",value1: "bla1",value2: "bla2"});
chartData.push({date: "blx",value2: "blax2"});
json看起来像这样:
[{
"date": bla,
"value1": bla1,
"value2": bla3,
}, {
"date": blx,
"value2": blax2
}]
我尝试创建一个类列表,但当我不分配value1属性时,该值将为零。但是我根本不希望这个属性在json中显示,如果没有赋值的话。
List <Models.HistoClass> HistoData= new List<Models.HistoClass>();
HistoData.Add(new Models.HistoClass {date="bla",value1="bla1",value2="bla3"});
HistoData.Add(new Models.HistoClass { date= "blx", value2="blax2" });
我应该如何创建数据模型来拥有这样的json?
谢谢!
如果你以显示的方式手动创建数据,你可以使用匿名类型来构建你想要的数据:
List <object> HistoData= new List<object>();
HistoData.Add(new {date="bla",value1="bla1",value2="bla3"});
HistoData.Add(new { date= "blx", value2="blax2" });
但是,如果您想使用强类型,并且/或者您的代码每次都以相同的方式初始化值,但有时值不存在,那么您可以使值为null,并告诉JSON.NET在序列化时忽略null属性:
public class HistoClass
{
public string date;
[JsonProperty(NullValueHandling=NullValueHandling.Ignore)]
public int? value1;
[JsonProperty(NullValueHandling=NullValueHandling.Ignore)]
public int? value2;
}
...
List <Models.HistoClass> HistoData= new List<Models.HistoClass>();
HistoData.Add(new Models.HistoClass {date="bla",value1="bla1",value2="bla3"});
HistoData.Add(new Models.HistoClass { date= "blx", value2="blax2" });
您可以使用Json.NET的ShouldSerialize:
Public class DateAndValues
{
public DateTime Date {get; set;}
public Int32 Index {get; set;}
public Int32 Value1 {get; set;}
public Int16 Value2 {get; set;}
public bool ShouldSerializeValue1 ()
{
// your condition for serialization, for example even objects:
this.Index % 2 != 0;
}
}
此描述:
若要有条件地序列化属性,请添加一个返回与该属性同名的布尔值的方法,然后在方法名称前加上ShouldSerialize。方法的结果确定属性是否序列化。如果该方法返回true,则该属性将被序列化,如果返回false,则将跳过该属性。
取自此链接。
当然,要真正序列化,请使用:
var firstObj = new DateAndValues { Index = 1, .. };
var secondObj = new DateAndValues { Index = 2, .. };
string json =
JsonConvert.SerializeObject(new[] {firstObj, secondObj}, Formatting.Indented);
并且根据上述条件secondObj
(偶数索引)将不具有Value1
。
相关文章:
- 如何在C#中反序列化json对象
- ASP.NET MVC-自动取消序列化JSON Fetch POST
- 如何在 Express/Node.js 中反序列化 JSON 数据
- 无法在 Javascript 中反序列化 JSON 对象
- C# 序列化 JSON 对象中的 JSON 对象
- 从 JavaScript 中的序列化 JSON 对象中提取变量
- 如何在 JQuery 中序列化 JSON 对象
- 为什么我的序列化 JSON 在到达 java 脚本函数参数后被取消序列化
- c#等效于序列化json
- 将函数对象引用作为序列化json传递
- c# Web服务到javascript反序列化JSON对象
- 在反序列化JSON对象时,是否有方法将属性名称转换为小写?
- 在Ext JS存储中反序列化json数据时区分模型类型
- . asmx怪从log4javascript日志反序列化JSON blob
- 如何序列化Json javascript
- 使用JavaScriptSerializer反序列化JSON对象
- 美元http.get获取反序列化JSON,但不能将其赋值给array
- c#反序列化JSON html字符串
- Jquery在ajax调用中没有正确序列化json
- 打字稿:如何使用私有变量反序列化 JSON 对象