2012-10-21 30 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

相关问题