Я должен получать данные с сервера. Приложение сервера написано в VS2008 (MFC). Есть только один способ отправить эти данные с сервера -> как объект CArchive. Я не могу изменить источник на сервере.
Я хочу получить эти данные в PHP (по tcp) и преобразовать их в JSON. Есть ли какой-нибудь умный способ конвертировать CArchive в JSON?
CArchive
не имеет предопределенного формата, который вы можете анализировать. Это просто двоичный файл, который зависит от приложения. Вы должны знать, что в нем, чтобы знать, как это читать. Библиотека может облегчить чтение некоторых типов данных (CString
, CArray
и т. д.), но я не уверен, что вы найдете что-то подобное.
В следующем примере показано, как CArchive
Работы (запоминающая часть):
CArchive ar;
int i = 500;
float f = 10.4f;
CString str(_T("string"));
ar << i << f << str;
Так что вам придется читать двоичные данные и как-то их интерпретировать. Это легко в C ++ так как MFC фреймворки точно знают, как сериализовать типы, включая сложные типы, такие как CString
а также CArray
, Но вам придется сделать это самостоятельно, используя PHP.
Например, вы можете прочитать 4 байта с указанным смещением и интерпретировать его как int
, Следующие четыре байта для float
, И тогда вы должны увидеть, как загрузить CString
Он сначала сохраняет длину, а затем данные, но вам нужно взглянуть на точный формат, который он использует.
Нет готового к использованию / использования CArchive
-> JSON конвертер. Я бы посоветовал вам изменить код вашего сервера, чтобы он CArchive
а также JSON данные.
Других решений пока нет …