2017-06-01 96 views
1

我正在使用de Json.Encode(object)函数将我的对象转换为json。Json.Encode对象的数组字符串为“[]”而不是null

问题是我有一个字符串数组属性(headers),我想,当它是空的将其转换为{ 'headers': [] },而不是{ 'headers': null }

我的类:

public class BaseObject 
{ 
    public LinkModel Links { get; set; } 
} 

public class LinkModel 
{ 
    public SelfLinkModel Self { get; set; } 
} 

public class SelfLinkModel 
{ 
    public string Uri { get; set; } 
    public string Method { get; set; } 
    public string[] Headers { get; set; } 
} 

和编码:

string content = Json.Encode(profile); 

综上所述,将其转换为:

{ 
    "Links":{ 
     "Self":{ 
      "Uri":"href", 
      "Method":"GET", 
      "Headers":null 
     } 
    } 
} 

而且我想:

{ 
    "Links":{ 
     "Self":{ 
      "Uri":"href", 
      "Method":"GET", 
      "Headers": [] 
     } 
    } 
} 

回答

2

一个选项是将属性初始化为空数组。在类的构造函数中这样做:

public class SelfLinkModel 
{ 
    public SelfLinkModel() 
    { 
     Headers = new string[0]; 
    } 

    public string Uri { get; set; } 
    public string Method { get; set; } 
    public string[] Headers { get; set; } 
} 
+0

另一种选择在转换之前检查null吗? –

+0

换句话说,如果你不希望它将该属性序列化为'null',不要让该属性为'null'? ;) –

+0

@MikeMcCaughan嗯,这是一种看待它的方式!当然,你可以建立一个自定义的序列化程序,但这似乎是很少的回报。 :) – DavidG

相关问题