我正在玩C#中的彈性搜索,我想用C#中的匿名類型創建一個查詢,並將其序列化爲JSON。但我跑了一個問題,因爲我需要JSON看起來像這樣的一個部分:是否有可能在C#中有一個名爲bool的字段?
{"bool": {<unimportant for question>}}
這將轉化爲具有一個名爲布爾場C#類。這可能嗎? (我的猜測是......)
我想我需要自定義序列化,或者彈性搜索爲bool提供了一些其他的替代名稱。
我正在玩C#中的彈性搜索,我想用C#中的匿名類型創建一個查詢,並將其序列化爲JSON。但我跑了一個問題,因爲我需要JSON看起來像這樣的一個部分:是否有可能在C#中有一個名爲bool的字段?
{"bool": {<unimportant for question>}}
這將轉化爲具有一個名爲布爾場C#類。這可能嗎? (我的猜測是......)
我想我需要自定義序列化,或者彈性搜索爲bool提供了一些其他的替代名稱。
如果您想爲變量指定與關鍵字相同的名稱,可以用@
作爲前綴。
bool @bool = false;
我會盡可能避免在所有情況下這樣做。這只是簡單的混淆。
是的,我只是嘗試一些新技術沒有什麼嚴重的。感謝「@」完美地工作 – Konstantin
使用DateMember
屬性來指定哪些序列化的名字是:
[DataMember(Name = "bool")]
public string MyBoolean { get; set; }
參見:JavaScriptSerializer.Deserialize - how to change field names
謝謝,這是我通常會做的,但我試圖用匿名類型... – Konstantin
您可以在[DataMember]
屬性設置的名字,但你需要使用真正的類(不匿名)。
using System;
using System.Collections;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;
// You must apply a DataContractAttribute or SerializableAttribute
// to a class to have it serialized by the DataContractSerializer.
[DataContract()]
class Enterprise : IExtensibleDataObject
{
[DataMember(Name = "bool")]
public bool CaptainKirk {get; set;}
// more stuff here
}
更多信息:http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datamemberattribute.aspx
'bool'是在.NET中有效的字段名。但是爲了從C#代碼中訪問它,您需要使用@ @,正如@funm的回答所示。 – Vlad
我現在添加了misisng引號 – Konstantin