【问题标题】:Is it possible to skip object name during Json Serialization?在 Json 序列化期间是否可以跳过对象名称?
【发布时间】:2018-03-05 13:08:21
【问题描述】:

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

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 and sign,属于Info对象。 现在我想跳过这部分:

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

但只输出Info 变量。 原因是从 api 文档提供的他们一直使用这些 Info 变量来请求。

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

【问题讨论】:

  • 补充@Ive 的评论,您还需要在基类中创建属性以返回Info 的Test、Key 和Ts 属性
  • o.O 好的,我已经删除了评论...无论如何,他说“使用 [JsonIgnore] 属性”(在您的 Info 属性中)

标签: c# json.net json-serialization


【解决方案1】:

你可以这样做:

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_"
}

【讨论】:

  • 重点是我想保留在同一个对象中(object1 有一个 object2 的实例,并且在序列化过程中跳过 Object2 {...} ),如 Info 将在所有 API 请求中使用。编辑:Object2 名称,所以输出中只有它的变量
  • @Tecno 是否可以更新您的问题并准确显示您希望 JSON 的样子?
  • @Tecno 查看我更新的答案,如果有用请告诉我?
  • 感谢您的建议,我想这就是我需要的:stackoverflow.com/questions/18658955/…
猜你喜欢
  • 2020-09-06
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-12
  • 2014-07-27
  • 1970-01-01
相关资源
最近更新 更多