使用序列化程序将对象转换为json转换格式

时间:2015-03-25 12:25:28

标签: c# json

我有以下c#模型对象

public class AddressUserFields
{
    public string number { get; set; }
    public string street { get; set; }
    public string apartment { get; set; }
    public string city { get; set; }
    public string state { get; set; }
    public string zipcode { get; set; }
    public string DPV { get; set; }
}

当我尝试使用json序列化方法将其转换为json字符串时,它将转换为如下所示,

JSON字符串:{userFields:[{"number":null,"street":null,"apartment":"","city":null,"state":null,"zipcode":null,"DPV":null}]}

但实际上我想找到如下, 预期的JSON结果:

{userFields:[{"number":null},{"street":null},{"apartment":""},{"city":null},{"state":null},{"zipcode":null},{"DPV":null}]}

所以任何人都可以设计我的c#模型对象并获得预期的json结果。

1 个答案:

答案 0 :(得分:2)

您只需要在希望Json进入的结构中创建poco对象。

如果你想要这个结构:

{userFields:
  [
   { "number":null,
     "street":null,
     "apartment":"",
     "city":null,
     "state":nul‌​l,
     "zipcode":null,
     "DPV":null
   }
  ]
 }

这是一个对象,其中一个属性userFields的类型为AddressUserFields[]

所以只需添加另一个类

public class SomeContainer
{
     public AddressUserFields[] userFields {get;set;}
}

并序列化那个

如果你真的想要一组不同的对象,它们都有不同的属性,比如你发布的内容:

...[{"number":null},{"street":null},{"apartment":""},...]

您可以使用Dictionary<TKey,TValue>数组,如下所示:

public class Fields
{
    public Dictionary<string, string>[] userFields { get; set; }
}

并像这样使用它?

var fields = new Fields()
{
    userFields = new[]{
        new Dictionary<string,string>(){{"number", null}},
        new Dictionary<string,string>(){{"street", null}}
    }
};

var json = JsonConvert.SerializeObject(fields);