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