4

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

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

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

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

4

3 回答 3

5

如果要将变量命名为与关键字相同的名称,可以在它们前面加上@.

布尔@bool =假;

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

于 2012-10-21T19:52:06.700 回答
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

于 2012-10-21T19:58:39.517 回答
1

使用该DateMember属性指定序列化名称是什么:

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

另请参阅:JavaScriptSerializer.Deserialize - 如何更改字段名称

于 2012-10-21T19:58:29.173 回答