我正在使用C#进行弹性搜索,我希望使用C#序列化为JSON的匿名类型创建查询。但是我遇到了一个问题,因为我需要在一个部分中看起来像这样的JSON:
{"bool": {<unimportant for question>}}
这将转换为具有名为bool的字段的c#类。这可能吗? (我的猜测不是......)
我想我需要自定义序列化,或者弹性搜索为bool提供了一些其他替代名称。
答案 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