Как объявить анонимный тип для сериализации Json, если один из ключей Json содержит точку? - PullRequest
1 голос
/ 01 ноября 2019

Я сериализую анонимный объект для использования в качестве сообщения-запроса для HTTP-запроса. Проблема в том, что один из ключей JSON содержит точку в своем имени. VS выбрасывает '' недопустимый декларатор члена анонимного типа ''.

return JsonConvert.SerializeObject(new
{
    query = "something",
    firstname.keyword = "xyz"
});

Что я могу сделать, чтобы решить эту проблему?

Редактировать: реальный запрос json выглядит примерно так, поэтомуЯ не думаю, что я могу использовать словарь:

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "firstname.keyword": ""
          }
        }
      ],
      "must_not": [ ],
      "should": [ ]
    }
  },
  "from": 0,
  "size": 10,
  "sort": [ ],
  "aggs": { }
}

1 Ответ

5 голосов
/ 01 ноября 2019

Json обычно можно представить с помощью массивов, словарей и анонимных объектов.

Первая часть вашего Json может быть сгенерирована следующим образом:

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