我正在向客户发送json中一百万个FOO
的列表。
public class FOO
{
public string Foo, Name, Call, Loc, ID;
public double Long, Lat;
public string[] Adr, OpenningHours;
}
但是客户要求我提供特定的输出,因为这会减小数据大小:
删除属性名称,加入地址,以及列出他们的住所,这将始终是每周7天。喜欢:
[
[
"ag",
99.0000000,
9.0000000,
"FOO-FOO BAR",
"ADR1|ADR2|ADR3|ADR4",
"0101",
"07:30-12:00,12:00-19:30",
"07:30-12:00,12:00-19:30",
"07:30-12:00,12:00-19:30",
"07:30-12:00,12:00-19:30",
"07:30-12:00,12:00-19:30",
"07:30-13:00,",
",",
"07H30",
"FOO BAR"
],
]
我对Address联接或平坦的OpenningHours没问题。使用:
public class ItemMapper
{
public string Foo, Name, Adr, ID, Call, Loc,
w1, w2, w3, w4, w5, w6, w7;
public double Long, Lat;
}
return
new ItemMapper
{
Foo = this.Foo,
// [...]
Adr = string.Join("|", this.Adr),
w1 = this.OpenningHours[0],
// [...]
w7= this.OpenningHours[6]
};
列表的序列化会产生不好的结果,我用编译后的正则表达式remplace进行了修复:
[
{ <-- Not a []
"PopertyName":"PropertyValue", <-- Poperty Name, and :
// ..
"PopertyName":"PropertyValue",
},
]
答案 0 :(得分:1)
我不建议使用它,因为它为您提供了动态JSON(即您无法使用它来制作类),但是您可以使用List<List<string>>
来解决该要求。
给出List<ItemMapper> data
,使用:
var result = data
.Select(item => new List<string>
{
x.Foo,
x.Name,
x.Call,
... // not sure about the order though
})
.ToList();