如何在 C# 中序列化时删除列表类型属性名称以及 和 [] 括号
Posted
技术标签:
【中文标题】如何在 C# 中序列化时删除列表类型属性名称以及 和 [] 括号【英文标题】:How do i remove the List type property name and the and [] brackets while serialing in C#如何在 C# 中序列化时删除列表类型属性名称以及 和 [] 括号 【发布时间】:2021-11-28 06:57:56 【问题描述】:这是我正在序列化的模型
public class SomeClassOne
public string name get; set;
public string Gender get; set;
public int Age get; set;
public List<Product> Products get; set;
public List<Location> locations get; set;
public string DOB get; set;
public class Product
public string Code get; set;
public string Price get; set;
public class Location
public string Address get; set;
public string PinCode get; set;
/我正在为该模型属性赋值
public List<Product> GetProducts()
List<Product> Products = new List<Product>();
string[] codes = "Code-A", "Code-B", "Code-C","Code-D", "Code-E" ;
foreach (var cod in codes)
Product product = new Product();
product.Code = cod;
Products.Add(product);
return Products;
public List<SomeClassOne> someClss()
List<SomeClassOne> someCls = new List<SomeClassOne();
SomeClassOne classOne = new SomeClassOne();
someCls.Add(classOne);
classOne.Products = GetProducts();
return someCls;
string json = JsonConvert.SerializeObject(someClss(), Formatting.Indented);
Console.WriteLine(json);
Console.ReadLine();
生成的Json如下
[
"name": null,
"Gender": null,
"Age": 0,
"Products": [
"Code": "Code-A",
"Price": null
,
"Code": "Code-B",
"Price": null
,
"Code": "Code-C",
"Price": null
,
"Code": "Code-D",
"Price": null
,
"Code": "Code-E",
"Price": null
],
"locations": null,
"DOB": null
]
如何删除 [] 并在序列化后生成如下 Json
[
"Code": "Code-A",
"Price": null
,
"Code": "Code-B",
"Price": null
,
"Code": "Code-C",
"Price": null
,
"Code": "Code-D",
"Price": null
,
"Code": "Code-E",
"Price": null
]
任何人请帮助我,我已经看到了一些合同解析器,但没有找到任何解决方案,在此先感谢。
【问题讨论】:
这很难理解,但看起来你只需要序列化一个List<Product>
的实例就可以了,其余的就不用管了。
使用 json 库你只需要得到产品结果:returnvalue['Products']
@DavidG 是的,这个 ListGetProducts()
的结果而忘记其余的。
@DavidG 实际上,这个 SomeClassOne 又是另一个类中的 List 类型属性,它们是我实际上正在序列化的更大类的一部分,那么在这种情况下我该如何实现。跨度>
【参考方案1】:
试试这个
var products=GetProducts();
string json = JsonConvert.SerializeObject(products, Newtonsoft.Json.Formatting.Indented);
Console.WriteLine(json);
Console.ReadLine();
json
[
"Code": "Code-A",
"Price": null
,
"Code": "Code-B",
"Price": null
,
"Code": "Code-C",
"Price": null
,
"Code": "Code-D",
"Price": null
,
"Code": "Code-E",
"Price": null
]
【讨论】:
以上是关于如何在 C# 中序列化时删除列表类型属性名称以及 和 [] 括号的主要内容,如果未能解决你的问题,请参考以下文章
如何在c#中使用具有相同名称但不同属性和结构的元素反序列化XML
在 C# 中删除 XML 序列化的 DefaultValue 属性