将对象序列化为自定义输出
本文关键字:自定义 输出 序列化 对象 | 更新日期: 2023-09-27 18:06:34
我知道这是一个愚蠢的问题,有人能帮我解决这个问题吗?
在c#中需要下面的输出,我使用"www.newtonsoft.com"json生成器dll。
要求使用JsonConvert输出。SerializeObject:
{
"must": [
{
"match": {
"pname": "TEXT_MATCH"
}
},
{
"_bool": {
"rname": "TEXT_BOOL"
}
}
]
}
我的c#类设计如下:
public class Rootobject
{
public Must[] must { get; set; }
}
public class Must
{
public Match match { get; set; }
public Bool _bool { get; set; }
}
public class Match
{
public string pname { get; set; }
}
public class Bool
{
public string rname { get; set; }
}
输出我得到JsonConvert后。SerializeObject如下:
{
"must": [
{
"match": {
"pname": "TEXT_MATCH"
},
"_bool": {
"rname": "TEXT_BOOL"
}
}
]
}
在所需的输出中,数组中有2个对象。在你得到的那个中有一个对象同时具有Match和Bool属性。以下创建对象和序列化的方法应该能满足您的要求:
static void Main(string[] args)
{
Rootobject root = new Rootobject();
root.must = new Must[2];
root.must[0] = new Must() { match = new Match() { pname = "TEXT_MATCH" } };
root.must[1] = new Must() { _bool = new Bool() { rname = "TEXT_BOOL" } };
string result = Newtonsoft.Json.JsonConvert.SerializeObject(root,
Newtonsoft.Json.Formatting.Indented,
new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
Console.WriteLine(result);
}
输出:{
"must": [
{
"match": {
"pname": "TEXT_MATCH"
}
},
{
"_bool": {
"rname": "TEXT_BOOL"
}
}
]
}