我已經查看了各種問題,但我不確定如何實現此操作。JSON將自定義C#結構序列化爲字符串,而不是對象
我有一個自定義結構,它目前沒有公共屬性。當它通過WebApi返回時(不做任何花哨的序列化,只是返回自定義結構本身),它將作爲對象{}
返回。
public struct CustomStruct
{
private string myProperty;
...
public override string ToString()
{
return this.myProperty;
}
...
}
自定義結構本身是一個屬性的上的父類的類型,其序列化爲:
{ "MyProp1":"value1","MyProp2":"value2","MyCustomStruct":{} }
當我上的自定義結構我想的輸出一個重寫的ToString()私人財產。將對象作爲JSON對象返回到JavaScript-land時,可以實現類似的行爲嗎?
E.g.我的私有屬性是一個名爲「myProperty」的字符串,設置爲「test」。 如果我增加了一個叫做「myProperty的」公共財產,我會得到下面的輸出:
{ "MyProp1":"value1","MyProp2":"value2","MyCustomStruct":{ "MyProperty":"test" } }
當我真正想要的是:
{ "MyProp1":"value1","MyProp2":"value2","MyCustomStruct":"test" }
希望這是有道理的。
下面是相關的問題,並沒有真正幫助我很多。想盡可能避免使用JSON.NET但會去,如果它是唯一的出路:
JSON.Net Struct Serialization Discrepancy
JSON.NET with Custom Serializer to a custom object
JSON serialization of enum as string
JavaScriptSerializer.Deserialize - how to change field names
你目前使用什麼序列化?即什麼版本的WebAPI?如果這是最新版本的話,如果我沒有弄錯的話,你已經在使用JSON.Net。 –
MVC 4,.NET 4.0 ...是的,有一個默認創建的JSON.NET的引用,我可以使用它,此刻我只是返回我的類的集合,而不是ActionResult/ContentResult或類似的東西。 –