是否有可能在C#中有一个名为bool的字段?

时间:2012-10-21 19:51:12

标签: c# json elasticsearch

我正在使用C#进行弹性搜索,我希望使用C#序列化为JSON的匿名类型创建查询。但是我遇到了一个问题,因为我需要在一个部分中看起来像这样的JSON:

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

这将转换为具有名为bool的字段的c#类。这可能吗? (我的猜测不是......)

我想我需要自定义序列化,或者弹性搜索为bool提供了一些其他替代名称。

3 个答案:

答案 0 :(得分:5)

如果您想将变量命名为与关键字相同,则可以在@前加上<。{}前缀。

bool @bool = false;

我会尽可能避免在所有情况下这样做。这简直令人困惑。

答案 1 :(得分: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

答案 2 :(得分:1)

使用DateMember属性指定序列化名称:

[DataMember(Name = "bool")]
public string MyBoolean { get; set; }

另请参阅:JavaScriptSerializer.Deserialize - how to change field names