мое клиентское приложение на C # должно десериализовать сложный JSON, отправленный Java-приложением - PullRequest
0 голосов
/ 14 сентября 2010

Если моему клиентскому приложению на C # необходимо десериализовать сложный JSON из приложения на сервере Java, какой вариант лучше у меня есть?

Вот два условия, которые необходимо учитывать: 1) скорость является наиболее важной 2) JsonФормат может включать информацию о типе данных Java, клиентское приложение C #.нужно распознать его и преобразовать в тип ядра C #.например,

...,"Variable1" : [ "java.math.BigDecimal", 0E-8 ],
  "Variable2" : [ "com.xmlasia.x5.refdata.instrument.model.MarginGroup"],...

IMO из-за пункта 2, единственный способ - это создать собственный десериализатор, я прав?

Что касается пункта 1, если я использую Json.net длядесериализовать Json, а затем преобразовать в arraylist, при этом это существенно повлияет на скорость?Есть ли другой лучший способ?

Недостаток подхода с использованием массива заключается в том, что метод extractJson очень запутан, и я думаю, что он очень медленный.

Ответы [ 2 ]

1 голос
/ 14 сентября 2010

Маловероятно, что «скорость важнее всего», иначе данные нужно будет отправлять в двоичном формате. Однако все основные парсеры json также работают быстро, поэтому это вряд ли проблема.

Если парсер просто проигнорировал тип данных java и сопоставил поля, основанные на именах, с полями в ваших объектах .net, вы можете быть в порядке. В противном случае вам понадобится парсер json, который вернет вам словарь полей, чтобы вы могли обрабатывать их самостоятельно. Не нужно писать собственный код обработки строк для декодирования json, это решенная проблема.

Существует множество json-библиотек для .net, так как я смотрю на них давно, я не могу рекомендовать лучший вариант для вас.

1 голос
/ 14 сентября 2010

Я думаю, что проще всего было бы построить какой-нибудь мост, который переведет этот JSON в нечто более совместимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...