如果Json密钥之一包含点,如何为Json序列化声明匿名类型?

m15*_*547 1 c# serialization json json-deserialization

我正在序列化一个匿名对象,以用作HTTP发布请求的请求消息。问题在于,其中一个JSON密钥的名称中包含一个点。VS抛出“无效的匿名类型成员声明器”错误。

return JsonConvert.SerializeObject(new
{
    query = "something",
    firstname.keyword = "xyz"
});
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题?

编辑:真正的json请求看起来像这样,所以我不认为我可以使用字典:

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "firstname.keyword": ""
          }
        }
      ],
      "must_not": [ ],
      "should": [ ]
    }
  },
  "from": 0,
  "size": 10,
  "sort": [ ],
  "aggs": { }
}
Run Code Online (Sandbox Code Playgroud)

Pat*_*ald 5

通常可以使用数组,字典和匿名对象表示Json。

您的Json的第一部分可以如下生成:

return JsonConvert.SerializeObject(new
{
    query = new
    {
        @bool = new
        {
            must = new[]
            {
                new
                {
                    term = new Dictionary<string, object>
                    {
                        ["firstname.keyword"] = string.Empty,
                    }
                }
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)