将对象序列化为自定义输出

本文关键字:自定义 输出 序列化 对象 | 更新日期: 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"
      }
    }
  ]
}