2012-10-21 66 views
4

我正在玩C#中的彈性搜索,我想用C#中的匿名類型創建一個查詢,並將其序列化爲JSON。但我跑了一個問題,因爲我需要JSON看起來像這樣的一個部分:是否有可能在C#中有一個名爲bool的字段?

{"bool": {<unimportant for question>}} 

這將轉化爲具有一個名爲布爾場C#類。這可能嗎? (我的猜測是......)

我想我需要自定義序列化,或者彈性搜索爲bool提供了一些其他的替代名稱。

+0

'bool'是在.NET中有效的字段名。但是爲了從C#代碼中訪問它,您需要使用@ @,正如@funm的回答所示。 – Vlad

+0

我現在添加了misisng引號 – Konstantin

回答

5

如果您想爲變量指定與關鍵字相同的名稱,可以用@作爲前綴。

bool @bool = false;

我會盡可能避免在所有情況下這樣做。這只是簡單的混淆。

+0

是的,我只是嘗試一些新技術沒有什麼嚴重的。感謝「@」完美地工作 – Konstantin

2

您可以在[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

相關問題