Формат даты в TJSONObject

Я конвертирую TFDMemTable в JSON через SaveToStream(), Тогда я использую TJSONObject::ParseJSONValue() чтобы получить объект JSON. После некоторого разбора я возвращаю JSON в строковом формате через ToString(),

  TStringStream *Stream = new TStringStream();
  TJSONObject *Json = new TJSONObject();

  fdMemTable->SaveToStream(Stream.get(), sfJSON);

  TJSONObject *JsonParsed = (TJSONObject*) Json->ParseJSONValue(Stream->DataString);
  ...    
  return JsonParsed->ToString();

Все это время даты остаются в форме 20180329T013152 вместо 2018-03-29T01:31:52, Я смотрю, есть ли какая-либо опция, которую я могу установить. TJsonOptions кажется близким к тому, что я ищу, но, кажется, используется только с ObjectToJsonString(),

Кто-нибудь знает такую ​​опцию, или я должен сделать это преобразование в поле даты / времени?

1 ответ

Решение

В JSON нет типа даты / времени. Значения даты / времени являются просто произвольными строковыми значениями с форматированием. Так что, если TFDMemTable предоставляет возможность указать форматирование даты / времени для выходных данных JSON, тогда вам придется обрабатывать это отдельно для каждого поля.

Кстати, вам не нужно создавать TJSONObject объект для вызова ParseJSONValue():

TJSONObject *JsonParsed = (TJSONObject*) TJSONObject::ParseJSONValue(Stream->DataString);
Другие вопросы по тегам