3
我使用F#类型,并用它在WPF窗口 的数据源,也产生从它的JSON:F#类型JSON是输出名称@和名称
type Customer = {
mutable Name: string ;
mutable Phone: PhoneNumber list
}
and
PhoneNumber = {
mutable Number: string
}
但输出是这:
{"[email protected]":"Superhero","[email protected]":[{"[email protected]":"111","Number":"111"},{"[email protected]":"222","Number":"222"},{"[email protected]":"333","Number":"333"}],"Name":"Superhero","Phones":[{"[email protected]":"111","Number":"111"},{"[email protected]":"222","Number":"222"},{"[email protected]":"333","Number":"333"}]}
如果我改变类型:
type Customer = { Name: string ; Telephone: string }
它输出的Json我希望:
{"Name":"Superhero","Phones":[{"Number":"111"},{"Number":"222"},{"Number":"333"}]}
但WPF绑定抛出此异常:
一双向或OneWayToSource结合不能对只读属性
这项工作是我用来生成的代码Json C#:
var phonelist = new List<PhoneNumber> { new PhoneNumber("111"),
new PhoneNumber("222"),
new PhoneNumber("333")
};
var fsharpList = Microsoft.FSharp.Collections.ListModule.OfSeq(phonelist); // TODO: Use a Extension Method
var c = new EntidadesFS.DO.Customer(name: "Superhero", phones: fsharpList);
var json = Newtonsoft.Json.JsonConvert.SerializeObject(c);
为什么会发生这种情况?
如何仅输出属性名称,使用可变,没有@末尾?
或如何解决这个问题?
问题只是'@'符号被附加到名称上,或者是属性被重复并且'@'符号附加到其中一个副本的名称上? – dbc
不是'F#'dev,但是因为这是'JSON.Net',你试过[JsonPropertyAttribute](https://www.newtonsoft.com/json/help/html/JsonPropertyName.htm)还是看看[这些] (https://stackoverflow.com/q/20982294/304683) – EdSF