【问题标题】:Json.NET Serializing my object gives me the wrong outputJson.NET 序列化我的对象给了我错误的输出
【发布时间】:2011-09-14 07:37:12
【问题描述】:

我在使用 JSON.NET 将我的 .NET 对象序列化为 JSON 时遇到了一点问题。我要序列化的输出必须如下所示:

{"members":[

    {"member":
        {
            "id":"4282",
            "status":"1931",
            "aktiv":"1",
            "firmanavn":"firmname1",
            "firmaUrl":"www.firmurl.dk",
            "firmaUrlAlternativ":"",
            "firmaSidstKontrolleretDato":"30-08-2010",
            "firmaGodkendelsesDato":"07-03-2002"
        }
    },
    {"member":
        {
            "id":"4283",
            "status":"1931",
            "aktiv":"1",
            "firmanavn":"firmname2",
            "firmaUrl":"www.firmurl.dk",
            "firmaUrlAlternativ":"",
            "firmaSidstKontrolleretDato":"30-08-2010",
            "firmaGodkendelsesDato":"18-12-2000"
         }
},
      ...... long list of members omitted

我现在的 .NET 结构(仍在尝试获得正确的输出)是这样的:

public class Members
{
    public List<Member> MemberList { get; set; }
}

和:

public class Member
{
    [JsonProperty(PropertyName = "Id")]
    public string Id { get; set; }

    [JsonProperty(PropertyName = "Status")]
    public string Status { get; set; }

    [JsonProperty(PropertyName = "Aktiv")]
    public string Aktiv { get; set; }

    [JsonProperty(PropertyName = "Firmanavn")]
    public string Firmanavn { get; set; }

    [JsonProperty(PropertyName = "FirmaUrl")]
    public string FirmaUrl { get; set; }

    [JsonProperty(PropertyName = "AltFirmaUrl")]
    public string AlternativFirmaUrl { get; set; }

    [JsonProperty(PropertyName = "FirmaSidstKontrolleretDato")]
    public string FirmaSidstKontrolleretDato { get; set; }

    [JsonProperty(PropertyName = "FirmaGodkendelsesDato")]
    public string FirmaGodkendelsesDato { get; set; }
}

上面的.NET结构在调用时给了我什么:

string json = JsonConvert.SerializeObject(members, Newtonsoft.Json.Formatting.Indented);

其中“成员”是成员列​​表。这是:

{
  "Members": [
   {
      "Id": "1062",
      "Status": "1933",
      "Aktiv": "1",
      "Firmanavn": "firmname",
      "FirmaUrl": "http://www.firmurl.dk",
      "AltFirmaUrl": "http://www.altfirmurl.dk",
      "FirmaSidstKontrolleretDato": "13-09-2011",
      "FirmaGodkendelsesDato": "13-09-2511"
   },
   {
      "Id": "1060",
      "Status": "1933",
      "Aktiv": "1",
      "Firmanavn": "firmname2",
      "FirmaUrl": "http://www.firmurl.dk",
      "AltFirmaUrl": "http://www.altfirmurldk",
      "FirmaSidstKontrolleretDato": "13-09-2011",
      "FirmaGodkendelsesDato": "13-09-2511"
   },

所以基本上,结构是正确的,因为它按预期创建了成员数组,但我缺少每个成员对象上的“成员”:标签。有没有办法制作这样的标签?某种类声明,还是什么?

我希望我的问题很清楚,如果没有,请告诉我,我会尝试进一步解释。

非常感谢。

/博

【问题讨论】:

  • JSON.NET 创建的 JSON 在这种情况下更胜一筹。通过创建具有一个已序列化该对象的属性的对象可以买到什么?
  • @Tejs +1,我同意你的观点,但也许 OP 受外部 API 期望的约束?
  • 你是绝对正确的 :) 我必须创建另一个类来代表拥有所有属性的成员(作为另一个对象)非常感谢!你创造一个答案吗?那我就欣然接受了。再次感谢!

标签: c# json serialization json.net jsonserializer


【解决方案1】:

听起来您只需要使用该名称的属性创建一个中间对象即可获得所需的 JSON;但是,我会考虑使用 JSON.net 最初呈现的 JSON(因为它在结构上更好)。

【讨论】:

    猜你喜欢
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    相关资源
    最近更新 更多