【问题标题】:Serializing c# class to JSON string with custom column name使用自定义列名将 c# 类序列化为 JSON 字符串
【发布时间】:2021-05-19 09:31:48
【问题描述】:

我有这个结果

{
    "StatusCode": "200",
    "Description": "Success",
    "Data": [
        {
            "Language_Key": "btn_select_country",
            "En_Val": "SELECT COUNTRY",
            "Ar_Val": "اختر الدولة"
        },
        {
            "Language_Key": "btn_continue",
            "En_Val": "CONTINUE",
            "Ar_Val": "استمرار"
        }
      ]
}

我想达到以下结果。

{
"StatusCode":"200",
"Description":"Success",
"Data":{
    "btn_select_country":{
          "En_Val":"SELECT COUNTRY",
          "Ar_Val":"اختر الدولة"
    },
    "btn_continue":{
          "En_Val":"CONTINUE",
          "Ar_Val":"استمرار"
    }
  }
}

我希望 Language_Key 用列名和 2 个子节点替换为 EN 和 AR 下面是我的代码

感谢任何提示。谢谢

【问题讨论】:

标签: c# json javascriptserializer


【解决方案1】:

你序列化一个字典,其中键是你的 Language_Key:

Dictionary<string, Translation> dict = countryObj
    .ToDictionary(o => o.Language_Key, o => new Translation { Ar_Val = o.Ar_Val, En_Val = o.En_Val});
    
rs.Data =  dict;
json = new JavScriptSerializer().Serialize(rs);

【讨论】:

  • 感谢您的回答 .. 它按我想要的方式工作。
【解决方案2】:

您可以使用 JsonProperty 属性在属性被序列化后重命名。

https://www.newtonsoft.com/json/help/html/JsonPropertyName.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-24
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多