我在c#中创建了一个自定义标签对象,我需要从这个对象中创建json对象。 但我从标签'中得到了标签。控制自定义标签对象。 序列化自定义标签对象后,json将填充标签属性。 但是,我不需要它。我只需要传递自定义标签对象。
这是自定义标签:
public class customLabel:Label
{
public string X { get; set; }
public string Y { get; set; }
public string H { get; set; }
public string W { get; set; }
public string FontName { get; set; }
public string FontSize { get; set; }
public string Type { get; set; }
public string Align { get; set; }
public string _Text { get; set; }
}
我正在使用 Newtonsoft.Json
作为json serializng
答案 0 :(得分:2)
创建一个包含所需属性的custom JsonConvertor
。
然后将其传递给SerializeObject
以控制序列化。
string result = JsonConvert.SerializeObject(
customLabel,
Formatting.Indented,
new CustomLabelConverter(typeof(CustomLabel)));
答案 1 :(得分:1)
看看这个Ignore Base Class Properties in Json.NET Serialization
[JsonObject(MemberSerialization.OptIn)]
public class customLabel:Label
{
[JsonProperty("X")]
public string X { get; set; }
[JsonProperty("Y")]
public string Y { get; set; }
...
public string H { get; set; }
public string W { get; set; }
public string FontName { get; set; }
public string FontSize { get; set; }
public string Type { get; set; }
public string Align { get; set; }
public string _Text { get; set; }
}
但是您需要将JsonProperty放到序列化所需的所有属性
答案 2 :(得分:0)
尝试这样的事情:
customLabel yourLabel = new customLabel();
yourLabel.X = 50;
yourLabel.Y = 20;
//....
string output = JsonConvert.SerializeObject(yourLabel);
//output contains the serialized object
customLabel deserializedLabel = JsonConvert.DeserializeObject<customLabel>(output);
编辑: 将您的班级更改为:
[DataContract]
public class customLabel:Label
{
[DataMember]
public string X { get; set; }
[DataMember]
public string Y { get; set; }
[DataMember]
public string H { get; set; }
[DataMember]
public string W { get; set; }
[DataMember]
public string FontName { get; set; }
[DataMember]
public string FontSize { get; set; }
[DataMember]
public string Type { get; set;
[DataMember]
public string Align { get; set; }
[DataMember]
public string _Text { get; set; }
}
现在只应包含属性[DataMember]的属性
并查看文档:{{3}}