Json 序列化期间是否可以跳过对象名称?

Is it possible to skip object name during Json Serialization?

我有一个对象的以下属性:

public string SenderAccount { get; set; }
public string ReceiverAccount { get; set; }
public decimal Amount { get; set; }
public string Currency { get; set; }
public Info Info { get; set; }

我想要这样的输出:

{ "sender_account":"1753154", 
  "receiver_account":"1753242",
  "amount":15,
  "currency":"USD",
  "test":1, 
  "key":"_MERCHANT_KEY_",
  "ts":_TIMESTAMP_, 
  "sign":"_SIGN_" 
}

其中test,key,ts和sign属于Info对象。 现在我想跳过这部分:

1."Info":
2.{
3.     "test":0,
4.     "key":"mkey",
5.     "ts":time_stamp,
6.     "sign":"signature"
7.}

但只输出Info个变量。 原因是从 api 文档中可以看出,他们始终使用这些信息变量来请求。

编辑: 我需要在序列化过程中跳过第 1、2、7 行。

你可以这样做:

Object1 object1 = new Object1
{
    sender_account = "1753154",
    receiver_account = "1753242",
    amount = 15,
    currency = "USD",
    Info = new Info
    {
        test = 1,
        key = "_MERCHANT_KEY_",
        ts = "_TIMESTAMP_",
        sign = "_SIGN_"
    }
};

并将其序列化为:

var resultJson = JsonConvert.SerializeObject(new
{
    object1.sender_account,
    object1.receiver_account,
    object1.amount,
    object1.currency,
    object1.Info.test,
    object1.Info.key,
    object1.Info.ts,
    object1.Info.sign,
});

输出:

{
    "sender_account": "1753154",
    "receiver_account": "1753242",
    "amount": 15,
    "currency": "USD",
    "test": 1,
    "key": "_MERCHANT_KEY_",
    "ts": "_TIMESTAMP_",
    "sign": "_SIGN_"
}